Ajax Nginx CORS不';我不上班
我的Nginx中有此配置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操作,
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
操作,效果很好,但是如果我使用AjaxPOST
操作,就会出现这个错误
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错误,但找不到更多关于该错误的信息。对我来说,有效的方法是:添加标题“访问控制允许来源”*始终;