我在使用Access-Control-Allow-Origin标头时遇到问题。 我有用于PHP网站的example.com和用于侦听端口4000的nodejs应用程序的node.example.com。当我尝试从example.com打开到node.example.com的WebSocket连接时,出现CORS错误。
如果我将此Nginx配置添加到node.example.com,
add_header Access-Control-Allow-Origin "*";
location ~ ^/(chat|socket\.io) {
proxy_pass https://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
我得到“'Access-Control-Allow-Origin'标头包含多个值'https://example.com,*',但只允许一个。”
然后我以为代理可能会自己添加另一个Access-Control-Allow-Origin,我在下面尝试了conf。
location ~ ^/(chat|socket\.io) {
proxy_pass https://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header Access-Control-Allow-Origin "*";
}
这次,我得到“所请求的资源上没有'Access-Control-Allow-Origin'标头。”因此,它甚至不添加标题。 此问题的正确配置是什么? 在我的服务器上安装了BTW Plesk,并为node.example.com禁用了apache。