问题是配置Nginx以允许CORS请求

时间:2017-02-19 11:06:15

标签: http ubuntu nginx cors cross-domain

我正在使用以下配置来允许来自所有来源的CORS请求:

server {
    listen 80;
    server_name example.com www.example.com;

    location / {
      include         uwsgi_params;
      uwsgi_pass      unix:/home/myself/myproject/myproject.sock;

      # CORS headers
      add_header'Access-Control-Allow-Origin' *;
      add_header 'Access-Control-Allow-Credentials' 'true';
      add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';

      # Logs
      error_log /var/log/nginx/example.dev.error.log;
      access_log /var/log/nginx/example.dev.access.log;
  }

}

该项目是使用Django编写的REST API 我正在使用test-cors.org进行测试,我在Chrome网络中收到了奇怪的结果:

  • 在响应标头中,我看到多个标头值
  
Access-Control-Allow-Credentials:true
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin:http://www.test-cors.org
Access-Control-Allow-Origin:*
  • 响应状态为200 OK,但响应正文为空。

  • 响应标头之一是X-Frame-Options:SAMEORIGIN。这不是存在于同源请求中吗?

  • 如果我以高频率发送请求(例如每秒5-6个请求),则所有响应的状态均为200 OK,但只有某些包含响应正文中的完整预期数据。

请帮助我理解为什么会发生这些以及如何解决。谢谢

0 个答案:

没有答案