FAQ-离线开发提交任务一直等待中:Unexpected response code:404

问题描述/异常栈
提交任务一直转圈等待中,刷新浏览器后实际提交成功。
F12报错:Error during WebSocket handShakeUnexpected response code:404

]

发现版本
EasyDataV9.0-patch01
错误排查
打开浏览器开发者工具提交任务,观察是否有WebSocket请求报错,有如下情况表示WebScoket链接未正常建立,需要去nginx节点查看nginx.conf和mammut.conf是否配置WebSocket代理。
WebSocket connection to 'ws://xxxx' failed: Error during WebSocket handshake: Unexpected response code: 404
微信图片_2025-07-31_110926_471.png 正常情况提交任务页面WebSocket状态为'101',Messgaes中返回code码为'200'。 {73ebc662-db5f-4696-b630-ee1e6875dd1c}.png {d99acb8d-3835-4ae1-ad4f-75f609cfcda8}.png
解决方案
在nginx server所在的所有机器修改mammut.conf配置 增加以下三行,修改后重启nginx服务。
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
微信图片_2025-07-30_102627_022.png
问题原因
客户端nginx代理未正确添加websocket配置。
1. 当代理服务器返回101状态码(协议切换)时,Nginx会允许建立隧道
2. 客户端必须通过请求中的"Upgrade"头部来请求协议切换
3. 默认情况下,"Upgrade""Connection"等逐跳(hop-by-hop)头部不会从客户端传递到代理服务器
4. 因此必须显式传递这些头部,以便代理服务器知道客户端要切换到WebSocket协议 

location /{
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
参考文档:https://www.cnblogs.com/kevingrace/p/9512287.html

作者:楚展航