Java Spring,SockJS-WebSocket握手期间出错:意外响应代码400

Java Spring,SockJS-WebSocket握手期间出错:意外响应代码400,java,spring,nginx,websocket,sockjs,Java,Spring,Nginx,Websocket,Sockjs,我已经使用SpringBoot实现了支持WebSocket的BE应用程序。我使用SockJS连接到我的WebSocket端点,在连接过程中出现以下错误: error during WebSocket handshake: Unexpected response code: 400 但是(如上图所示)一切正常,websocket打开了 现在我不明白这个问题的原因是什么,以及如何解决它。请帮忙 已更新 感谢您的帮助,我修复了SockJS lib的版本问题,但意外响应代码为400的问题仍然存在:

我已经使用SpringBoot实现了支持WebSocket的BE应用程序。我使用SockJS连接到我的WebSocket端点,在连接过程中出现以下错误:

error during WebSocket handshake: Unexpected response code: 400

但是(如上图所示)一切正常,websocket打开了

现在我不明白这个问题的原因是什么,以及如何解决它。请帮忙

已更新

感谢您的帮助,我修复了SockJS lib的版本问题,但意外响应代码为400的问题仍然存在:

我还在Tomcat8前面使用nginx。这是我的nginx配置:

server {
    listen          443 ssl;        
    server_name  myserver.com;
    ssl on;

    location /api/ {                                                                                                                                                                                                                                             
        proxy_pass_header X-XSRF-TOKEN;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
        proxy_pass        http://localhost:8081/api/;                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
        proxy_set_header Origin "http://localhost:8081/api/";                                                                                                                                                                                                    

        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_http_version 1.1;                                                                                                                                                                                                                                  
    }                                                                                                                                                                                                                                                            

    location /dashboard/ {
        proxy_pass        http://localhost:8081/dashboard/;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /manager {
        proxy_pass        http://localhost:8081/manager/;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }        

    location / {
        root   /srv/www/htdocs/myserver/;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /srv/www/htdocs/;
    }        

} 

你有错误版本的SockJS

在浏览器端,应用程序可以使用模拟W3C WebSocket API的sockjs客户端(版本1.0.x)

您在/api/部分中缺少两件事

代理设置头升级$http\U升级;
代理设置头连接“升级”;

如果将SSL与Amazon负载平衡器一起使用,也会出现这种复杂情况。elb的侦听器应该有一个SSL条目(而不是HTTPS),负载平衡器端口为443,实例协议为TCP,实例端口为80(不要忘记添加证书) 这将允许WebSocket流量通过

详细参考:

谢谢,它应该在客户端或服务器端固定在哪里?在客户端。谢谢你的帮助!我修复了SockJS lib的版本问题,但意外响应代码400的问题仍然存在:您是否使用任何反向代理(nginx)?能否显示您的nginx配置?我有类似的问题是由错误的nginx配置引起的