Origin包含端口号

时间:2017-10-25 22:22:37

标签: node.js webpack cors cross-domain port

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

使用POSTMAN发送相同的请求时,我只需从Origin删除端口号即可使其工作。但它应该正常工作,因为请求和源的端口都是同一个。

e.g。这不起作用:

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

# Headers
Origin: http://the_address:the_port

虽然这完全正常:

# Headers
Origin: http://the_address

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

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

1 个答案:

答案 0 :(得分:2)

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

将前端代码的实际来源从http://the_address更改为http://the_address:the_port的唯一方法是实际提供来自http://the_address的代码,该代码的端口为80,而不是http://the_address:the_port,其中包含80以外的其他内容。