当源包含端口号时,不允许使用 CORS



我有一个应用程序在Node.js服务器上运行。CORS 已启用,但我的 POST 请求被拒绝 (400, not allowed )。

使用 POSTMAN 发送相同的请求时,我可以通过简单地从Origin中删除端口号来使其工作。但它应该正常工作,因为来自请求的端口和源的端口是同一个。

例如,这不起作用:

# Request
Request URL: http://the_address:the_port/etc
Request Method: POST
# Headers
Origin: http://the_address:the_port

虽然这工作得很好:

# Headers
Origin: http://the_address

你知道为什么这会破裂吗?即使端口位于源中,只要它是同一端口,CORS 也不应该允许相同的源请求吗?

PS:我也在使用 webpack 和 React,但我认为它不相关(除非我弄错了)。

您无法手动更改浏览器发送的Origin标头。浏览器根据它所知道的前端 JavaScript 代码的实际来源来设置它发送的 Origin 标头。因此,如果您的代码向其发送请求的 URL 的来源与浏览器发送的 Origin 标头的值不完全相同,则浏览器会将其视为跨源请求。

将前端代码的实际来源更改为从http://the_address:the_port http://the_address的唯一方法是实际提供来自http://the_address的代码,该代码以 80 作为其端口,而不是从 http://the_address:the_port 提供代码,后者的端口号不是 80。

相关内容

  • 没有找到相关文章

最新更新