我有一台使用 nginx 作为反向代理的服务器,它将对 foo.example.com 的请求传递到 10.0.0.210,端口 80 转发工作正常,但我还需要转发端口 9292 以用于 javascript 消息服务。
我的 9292 服务器的 server{} 条目是:
server{
listen 9292;
server_name foo.example.com;
location / {
add_header Access-Control-Allow-Origin http://foo.example.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://10.0.0.210:9292;
}
}
但是当我进入该应用程序时,我的 chrome 控制台出现此错误:
Unexpected response code: 400
然后出现大量此错误:
XMLHttpRequest cannot load http://foo.example.com:9292/faye. Origin http://foo.example.com is not allowed by Access-Control-Allow-Origin.
它能够从服务器请求初始 JavaScripthttp://foo.example.com:9292/faye.js但之后我就收到这个错误。
我读到的所有内容都表明这应该可以正常工作,那么我遗漏了什么?
答案1
经过一番调整后,我成功解决了 Access-Control-Allow-Origin 问题,但出现意外响应代码:400 是因为 Web 套接字还不能通过反向代理工作。
看:https://github.com/faye/faye/issues/24#issuecomment-391508