Nginx CORS不适用于POST

toy*_*toy 5 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';
}
Run Code Online (Sandbox Code Playgroud)

现在,我有我的web应用程序,它确实GETPOSTGET它工作正常,但如果我这样做阿贾克斯POST我得到这个错误

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

如果我执行“ GET”请求,则可以在响应中看到这一点。

Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Methods:GET, POST, OPTIONS
Access-Control-Allow-Origin:*
Run Code Online (Sandbox Code Playgroud)

但是,如果我发表文章,我什么也看不到。

max*_*ath 6

我遇到了同样的问题,并通过在指令中添加关键字always来 解决了这个问题add_header。如文档所述

add_header:如果响应代码等于200、201、204、206、301、302、303、304或307,则将指定的字段添加到响应标头中。[...]

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

发生的事情是,没有always,我的GET请求被返回200并因此具有预期的标头,而我POST却得到了400,因此没有标头并因此触发了CORS错误。