小程序
小游戏
企业微信
微信支付
扫描小程序码分享
微信小程序在H5端和模拟器上连接websocket都正常,但是同样的代码在真机上连接websocket报错 {"errCode": 1004, "errMsg": "open fail: _code:20,_msg:Invalid HTTP status."},怎么解决?
请求:wss://www.xxxx.com/test/chat/9900369423433728
域名已备案,证书已配置,443端口防火墙已开放
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
修改 Nginx 配置中的 location /ws 部分,添加 proxy_set_header Origin:
location /ws
proxy_set_header Origin
# 关键修复:伪造 Origin 头,绕过 Spring Boot 的跨域检查
# 将 Origin 设置为后端认为合法的地址,或者直接设为空
proxy_set_header Origin "";
location /ws {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
出现这个问题可能有以下几个原因及解决方法:
一、证书问题
二、网络限制
三、小程序版本差异
四、代码兼容性问题
五、服务器配置问题
可以开发者工具选择真机调试,查看request请求头,跟 模拟器和h5端的 请求头 做对比进行排查。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
修改 Nginx 配置中的
location /ws部分,添加proxy_set_header Origin:# 关键修复:伪造 Origin 头,绕过 Spring Boot 的跨域检查
# 将 Origin 设置为后端认为合法的地址,或者直接设为空
proxy_set_header Origin "";
location /ws {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
# 关键修复:伪造 Origin 头,绕过 Spring Boot 的跨域检查
# 将 Origin 设置为后端认为合法的地址,或者直接设为空
proxy_set_header Origin "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
出现这个问题可能有以下几个原因及解决方法:
一、证书问题
二、网络限制
三、小程序版本差异
四、代码兼容性问题
五、服务器配置问题
可以开发者工具选择真机调试,查看request请求头,跟 模拟器和h5端的 请求头 做对比进行排查。