Nginx CORS不适用于POST

时间:2016-03-11 17:08:23

标签: ajax nginx cors

我在Nginx中有这个配置

$phpArtist = $phpJson['tracks']['track'][0]['artist'];

现在我的网络应用程序$Artist = $track['artist']['name'];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'; } GET它运行正常但如果我执行Ajax POST我收到此错误

  

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

如果我做'GET'请求,我可以在回复中看到这一点。

GET

但如果我发帖,我看不到任何一个。

1 个答案:

答案 0 :(得分:3)

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

  

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

     

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

发生的情况是,在没有always的情况下,我的GET请求被返回200,因此具有预期的标头,而我的POST获得了400,因此没有标题,从而触发CORS错误。