WebSocket
套接字400
错误`
本片文章针对Js
与Python
建立通信时,所出现的问题
排查思路
1.由于服务器上部署Nginx
,Python3
后端使用Tornado
框架。Tornado
框架支持WebSocket
套接字,所以可先将后端因素抛出。
2.实际测试环境,客户端访问网页,js
向服务器端发起建立会话。js
抛出400
错误,可以理解为跨域访问
的问题。
3.因为中间使用Nginx
做代理和负载均衡,所以我们暂时可以将问题集中在中间层Nginx
上。
# 修改前
server {
listen 80;
server_name ***.com;
location / {
proxy_pass http://***.com;
proxy_set_header Host $host;
proxy_set_header X-Read-IP $remote_addr;
proxy_set_header X-Forwarded-For $Proxy_add_x_forwarded_for;
}
}
# 修改后
server {
listen 80;
server_name ***.com;
location / {
proxy_pass http://***.com;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Read-IP $remote_addr;
proxy_set_header X-Forwarded-For $Proxy_add_x_forwarded_for;
}
}
重启Nginx
或者重读配置文件,然后js
的400
跨域访问问题就解决了。