Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol‘ header but no response was
Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol’ header but no response was received
一、分析
二、初步解决
三、最终解决
分析
和前端同事调试WebSocket接口,一次性通过,作为一个老码农很是欣慰。
第二天另外一个前端同事拉取代码,跑项目。啊,怎么WebSokcet连不上,一堆报错。
我看了后台在连接后立马报错,然后又断开连接。丈二和尚摸不着头脑。
通过在线网站多次测试WebSocket连接,没复现,这不是没问题嘛。
网站地址: http://websocket.jsonin.com/
通过我4年开发,6年工作经验来看,一定是前端的问题,一定是别人的问题,与我无关。继续搬砖…
又过了一会,看着后台无休止的报错,烦死了,让我来终结这一切吧。
前端同事发来的错误信息:Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol’ header but no response was received
WebSocket握手时出错:发送了非空的’Sec-WebSocket-Protocol’报头,但没有收到响应。
原来小丑是我自己,真是后端的问题,没有给前端响应头。
分析原因:应该是前端传了非空的’Sec-WebSocket-Protocol’请求头,后端没有给响应,火狐可以是因为火狐没有传,谷歌又传了这个值,害,真麻烦。
初步解决
知道问题了那就先解决,首先想到的是给HttpServletReponse返回请求头Sec-WebSocket-Protocol的数据。有一说一,开干。
问题又来了,我从哪里获取HttpServletReponse呢,索性给加了两个参数,启动报错,人家不识别。。。
看了一下这个注解,有个配置参数,就你了。写个配置类,在返回的头上加上参数。
配置类如下:
最终解决
完事,问了下报错的前端同事可以了不,不出所料,确实可以了。OK,继续干活了。
回头发现控制台又报错,并且通过网站测试WebSokcet也连不上了。。。完蛋,治好了咽炎,鼻炎又犯了。
谷歌浏览器是可以了,但是火狐浏览器连接不到,那问题就明朗了,火狐没有传Sec-WebSocket-Protocol,而谷歌浏览器传这个值了。加个判断最终解决。
package com.system.graphical.common.websocket;import org.springframework.stereotype.Component;import javax.websocket.HandshakeResponse;
import javax.websocket.server.HandshakeRequest;
import javax.websocket.server.ServerEndpointConfig;
import java.util.List;@Component
public class WebSocketConfig extends ServerEndpointConfig.Configurator {@Overridepublic void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {List<String> list = request.getHeaders().get("Sec-WebSocket-Protocol");if (list != null && list.size() > 0) {response.getHeaders().put("Sec-WebSocket-Protocol", list);super.modifyHandshake(sec, request, response);}}
}
我是失忆,一个热爱技术的宅男,文章有任何问题您都可以在留言中指出。欢迎留言。也可以加我个人微信一起学习,一起进步!
Error during WebSocket handshake: Sent non-empty ‘Sec-WebSocket-Protocol‘ header but no response was相关推荐
- WebSocket——[Error during WebSocket handshake: Unexpected response code: 403]解决方案
问题描述 WebSocket connection to 'ws://localhost:8888/MetroCity/ws/endpointChat' failed: Error during We ...
- WebSocket——[Error during WebSocket handshake: Unexpected response code: 200]解决方案
问题描述 WebSocket connection to 'ws://localhost:8888/MetroCity/ws/endpointChat' failed: Error during We ...
- 【uniapp】Error during WebSocket handshake: Unexpected response code: 302
前言 使用uniapp创建WebSocket时发生错误:Error during WebSocket handshake: Unexpected response code: 302 分析 报302的 ...
- SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400
SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400 问题出现在nginx的配置文件,需要 ...
- WebSocket connection to,Error during WebSocket handshake: Unexpected response code: 404
使用标准的JSR 356注解时,需要使用tomcat 8.x版本,如果使用tomcat 7.x的版本,则需要继承WebSocketServlet,否则会报WebSocket connection to ...
- WebSocket connection to ‘ws://XXX‘ failed: Error during WebSocket handshake报错
最近做前后端通信.后端实时推送数据给前端.报错WebSocket connection to 'ws://localhost:8086/websocket/message' failed: Error ...
- WebSocket报错:Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but
Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was ...
- Error during WebSocket handshake: Unexpected response code: 404错误的解决
作者:朱金灿 来源:https://blog.csdn.net/clever101 本文操作环境是:64位Windows 10,eclipse Oxygen.2 Release (4.7.2). 在使 ...
- netty : websocketx.WebSocketHandshakeException: not a WebSocket handshake request: missing upgrade
文章目录 1.背景 1.背景 netty聊天室程序 刚刚启动项目,然后刷线页面.后台报错. io.netty.handler.codec.http.websocketx.WebSocketHandsh ...
- websocket handshake unexpected response code 404问题
Html页面websocket客户端出现websocket handshake unexpected response code 404问题,一般是地址错误.在new WebSocket()里需要带上 ...
最新文章
- 利用Bandwidth Splitter限制带宽
- c+和python哪个快-C/C++比python快是什么意思?
- VC下设置Excel单元格的边框
- Web Service/WCF 部署注意事项。
- Leetcode 133.克隆图
- vue-cli中的babel配置文件.babelrc详解
- Allegro16.6导出位号图
- 网络浏览器大战(Google与IE的较量)
- 我很喜欢电影背后这个看上去很精神分裂的故事,跟影片中那个盘根错节的故事相得益彰。好的艺术作品永远都不可能被简化成纬度单一的说教。
- JDBC在jsp中的使用
- 中文汉字和英文数字的unicode编码范围
- 外链建设的22种方法
- 广州大学机器学习与数据挖掘实验三
- Java实现多个图片转化成PDF
- 小分子php蛋白,小分子-蛋白相互作用关系——简单的docking介绍
- 语音标注必须了解的基础知识点
- JavaScript的DOM知识点总结
- 计算机应用研究、计算机工程与应用、计算机科学与探索投稿经验
- 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
- 智能计算:人工神经网络(ANN)
热门文章
- 《无敌大冒险》技术支持
- 破解版editPlus
- centos7刷新dns
- setup factory 会话变量
- 分享一些学习和获取资料的网站
- SXWIN7X64EN_20181104_NET_msu_LITE英文精简版
- WIN10_cmd命令提示符更换用户启动
- Redis 官方可视化工具,高颜值,功能太强大!
- 上古卷轴5无法启动 因为计算机丢失,《上古卷轴5:天际》无法启动nmm解决方法...
- 测试ai模糊软件,“马赛克”视频能被AI软件彻底还原?测试结果出乎意料!