微信小程序webSocket使用,本地開發環境沒問題,QA環境報錯:前端
org.springframework.web.socket.server.support.DefaultHandshakeHandler : Handshake failed due to invalid Upgrade header: null
前端報錯:java
failed: Error during WebSocket handshake: Unexpected response code: 400
通過比較後發現,QA環境使用nginx反向代理服務器忽略了headers中的:Upgrade:websocket。nginx
解決辦法:在 Nginx ,location
中添加如下紅色代碼:web
proxy_set_header Upgrade $http_upgrade;
spring
proxy_set_header Connection
"upgrade"
;
1 server { 2 listen 80; 3 server_name localhost; 4 5 6 location / { 7 proxy_set_header X-Real-IP $remote_addr; 8 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 9 proxy_set_header Host $http_host; 10 proxy_set_header X-NginX-Proxy true; 11 12 # prevents 502 bad gateway error 13 proxy_buffers 8 32k; 14 proxy_buffer_size 64k; 15 16 proxy_pass http://127.0.0.1:8080; 17 proxy_redirect off; 18 19 # enables WS support 20 proxy_http_version 1.1; 21 proxy_set_header Upgrade $http_upgrade; 22 proxy_set_header Connection "upgrade"; 23 } 24 }
使得請求中包含Upgrade。小程序