Ajax Nginx CORS不';我不上班

Ajax Nginx CORS不';我不上班,ajax,nginx,cors,Ajax,Nginx,Cors,我的Nginx中有此配置 server { listen 8080; add_header Access-Control-Allow-Origin *; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Content-Type'; } 现在,我有了一个web应用程序,它对GET和POST进行GET操作,

我的Nginx中有此配置

server {
    listen       8080;

add_header    Access-Control-Allow-Origin *;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
}
现在,我有了一个web应用程序,它对
GET
POST
进行
GET
操作,效果很好,但是如果我使用Ajax
POST
操作,就会出现这个错误

XMLHttpRequest无法加载“URL”。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“Origin”。响应的HTTP状态代码为404

如果我做了一个“获取”请求,我可以在我的响应中看到这一点

Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET, POST, OPTIONS
Access-Control-Allow-Origin:*

但是如果我发了一篇帖子,我就看不到任何东西

我也遇到了同样的问题,通过在我的
add_header
指令中添加关键字
always
解决了这个问题。如秘书长所述:

add_header
:将指定字段添加到响应头,前提是响应代码等于200、201、204、206、301、302、303、304或307。 [……]

如果指定了
始终
参数(1.7.5),则无论响应代码如何,都将添加标题字段


发生的情况是,如果没有
始终
,我的
获取
请求将返回
200
,因此具有预期的头,而我的
POST
将获得400,因此没有头,从而触发CORS错误

对我来说,我怀疑我的问题是请求返回4xx代码(这里的预期行为),该代码被解释为CORS错误,但找不到更多关于该错误的信息。对我来说,有效的方法是:添加标题“访问控制允许来源”*始终;