首页 > 其他分享 >websocket携带jwt token

websocket携带jwt token

时间:2022-12-14 13:45:58浏览次数:62  
标签:Protocol jwt WebSocket token Sec upgrader websocket

在websocket中,目前未提供修改请求头字段的方法,不过可以借助于“Sec-WebSocket-Protocol”,将token放入请求头中,后端收到请求后,从请求头中取得token做校验。

即:在前端websocket中放入token

 let token=localStorage.getItem("token")
 this.socket = new WebSocket(terminalWsUrl,[token]);//在webscoket中放入token

后端接收到请求后,从header中取出“Sec-WebSocket-Protocol”,做校验

 token = context.Request.Header.Get("Sec-WebSocket-Protocol")
 if len(token) == 0 {
   ResponseError(context, 11000, errors.New("请求未携带token,无权限访问"))
   context.Abort()
   return
 }

另外需要注意的是,在响应头上添加Sec-Websocket-Protocol,如下是在grilla/websocket响应中设置Sec-Websocket-Protocol的方式

var upgrader = func(r *http.Request) *websocket.Upgrader {
	upgrader := &websocket.Upgrader{}
	upgrader.HandshakeTimeout = time.Second * 2
	upgrader.CheckOrigin = func(r *http.Request) bool {
		return true
	}
	upgrader.Subprotocols = []string{r.Header.Get("Sec-Websocket-Protocol")}  //设置Sec-Websocket-Protocol
	return upgrader
}

多数时候,浏览器出现下面异常提示信息,就是因为响应报文头中没有Sec-Websocket-Protocol导致的

WebSocket: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was receivedWebSocket:WebSocket

引用链接:
(1)https://blog.csdn.net/weixin_43277309/article/details/123129650
(2)https://www.jianshu.com/p/7b1deb1e0a07?utm_campaign=studygolang.com&utm_medium=studygolang.com&utm_source=studygolang.com

标签:Protocol,jwt,WebSocket,token,Sec,upgrader,websocket
From: https://www.cnblogs.com/cosmos-wong/p/16981816.html

相关文章

  • 介绍一下 websocket
    一般的http请求都是短连接,而webpack的使用可以建立长连接;什么是websocketwebsocket是一种网络通信协议,是HTML5开始提供的一种在单个TCP连接上进行全双工通信......
  • java springboot+rabbitmq+websocket 订阅展示
    记录工作需要的依赖<!--fastjson坐标--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId>......
  • JWT认证
    目录1、构成2、原理3、校验3、drf项目的jwt认证开发流程4、drf简单使用jwt安装继承AbstractUser表创建超级用户简单使用简单认证使用5、使用jwt自定制认证类基于BaseJSONWe......
  • 轻量前后端分离简单网页版聊天(Spring Boot+WebSocket+Vue)Demo实现
    WebSocket是啥?在HTTP协议中,所有的请求都是由客户端发起的,由服务端进行响应,服务端无法向客户端推送消息,但是在一些需要即时通信的应用中,又不可避免地需要服务端向客户端推......
  • Jwt
         ......
  • 解决aspnetcore-browser-refresh.js:234 WebSocket connection to 'wss://localhost:6
    前言前段时间升级了VisualStudio到v17.1.1最新版本,然后今天来运行之前的一个.net5项目一直提示:aspnetcore-browser-refresh.js:234WebSocketconnectionto'wss://......
  • websocket协议详解
    概念介绍①单工通信:数据传输只允许在一个方向上传输,只能一方发送数据,另一方接收数据并发送。②半双工:数据传输允许两个方向上的传输,但在同一时间内,只可以有一方发送或接收数......
  • WebSocket 学习之路(一)
    WebSocket学习之路(一)目录WebSocket出现的原因WebSocket环境的搭建WebSocket出现的原因Http虽然是互联网的基础,但http协议采用的是请求响应模型,一次请求对应一......
  • web客户端websocket
    Websocke是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议在WebSocketAPI中浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的链接,并进行双向传......
  • error: expected ';', ',' or ')' before '&' token 解决方法
     https://www.cnblogs.com/zzdbullet/p/9776890.html error:expected';',','or')'before'&'token解决方法donoot于2018-05-0113:34:26发布96045收藏......