nginx,上游,cors失败

无法理解为什么我的上游/ CORSconfiguration失败。 这阻止了一些本地开发和testing。

我得到了一个没有'Access-Control-Allow-Origin'头在local.mysite.com:8081events.mysite.com进行API请求时出现在请求的资源上

这是我的服务器configuration/ etc / nginx / sites-available / mysite

# the IP(s) on which your node server is running. I chose port 3000. upstream mysite { server 127.0.0.1:3000; } # the nginx server instance server { listen 0.0.0.0:80; server_name mysite events.mysite.com; access_log /var/log/nginx/mysite.log; # pass the request to the node.js server with the correct headers and much more can be added, see nginx config options location / { proxy_set_header Access-Control-Allow-Origin *; # proxy_set_header 'Access-Control-Allow-Credentials' 'true'; # i've tried with and without this setting proxy_set_header 'Access-Control-Allow-Headers' 'X-Requested-With,Accept,Content-Type, Origin'; proxy_set_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://app_mysite/; proxy_redirect off; } } 

另外 ,我试着在Access-Control- *选项上使用add_header而不是proxy_set_header,但是也没有使用骰子。

我正在运行一个Node.js应用程序。 我没有修改节点代码处理CORS …是我的nginxconfiguration错误,还是很好,但我需要在节点做点什么?

CORS头文件必须提供给浏览器,而不是您的节点应用程序。 所以你应该使用add_header指令,或者更好的,在你的应用程序中设置这些头文件。 这应该够了。 如果您使用withCredentials取消注释相应的行。 如果您使用的浏览器发送预检请求,您应该正确处理“选项”请求。

 location / { add_header Access-Control-Allow-Origin *; # add_header Access-Control-Allow-Credentials true; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://app_mysite/; proxy_redirect off; }