【发布时间】:2018-04-07 03:58:03
【问题描述】:
我有一个在 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
你知道为什么这会破坏吗?即使端口在 Origin 中,CORS 是否不应该允许同源请求,只要它是同一个端口?
PS:我也在使用 webpack 和 React,但我不认为它是相关的(除非我弄错了)。
【问题讨论】:
-
您不能手动更改浏览器发送的
Origin标头,对吧?浏览器设置它发送的Origin标头,它基于它所知道的您发送请求的前端 JavaScript 代码的实际来源。因此,如果您的代码发送请求的 URL 的来源与浏览器发送的Origin标头的值不完全相同,则浏览器认为这是一个跨域请求。 -
将前端 JavaScript 代码的实际来源从
http://the_address:the_port更改为http://the_address的唯一方法是从http://the_address实际提供前端 JavaScript 代码,它的端口为 80编号,而不是来自http://the_address:the_port,它的端口号不是端口 80。 -
向我们展示完整的 CORS 错误。
标签: node.js webpack cors cross-domain port