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
跨域訪問問題就解決了。