12月25

websocket连接时前后端使用token鉴权导致连接失败的原因

| |
14:28Web开发  From: 本站原创
前后端通过websocket通信,但是需要鉴权,可以利用websocket的子协议来传输token,代码如下:
var ws = new WebSocket("ws://localhost/ws",[token]);
在后面加上[这里是token内容]。这样请求头就会携带:
Sec-WebSocket-Protocol:token value
参数是一个数组。如果数组有多个值,后端也会接受到逗号隔开的值。
后端可以获取这个token进行鉴权。
重点来了!
如果传递了token参数,后端响应的时候,也必须带上这个token响应!否则前端接收不到数据!
我竟然忘记前端传过来的token是加密后的,首先解密后去校验,通过后再把原加密token放在响应头即可, 如果不一致也会导致前端接收不到消息。
如下是java的例子“:
HttpServletResponse response = (HttpServletResponse)servletResponse;
response.setHeader("Sec-WebSocket-Protocol", token);

来源:Heck's Blog
地址:https://www.heckjj.com/post/662/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
阅读(422) | 评论(0) | 引用(0)