我在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,但我认为它不相关(除非我弄错了)。答案 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以外的其他内容。