我有一个应用程序在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。