在Dart中为浏览器的websocket连接添加额外的头



我正在尝试建立一个经过身份验证的websocket连接,这个问题是服务器部分类似问题的兄弟姐妹。当我从浏览器建立websocket连接时,我如何添加额外的头?

我试图使用dart:html的WebSocket对象连接到服务器,需要一个包含当前认证令牌(JWT)的标头authentication:来认证用户。问题是WebSocket在构造函数调用后立即建立连接,它没有任何参数来发送http请求头:

var ws = new WebSocket('wss://localhost:8080/ws');

就在这个字符串之后,websocket连接关闭并报错,因为我的服务器拒绝了所有在headers中不包含认证令牌到该路径的请求。

是否有其他实现的websocket的浏览器端允许认证websocket连接?

是否有可能为浏览器编写不同的WebSocket实现?

我不是安全方面的专业人士,但是在路径请求中发送令牌而不是标头是否安全?比如:

wss://localhost:8080/ws?token=BLAHBLAHBLAH

你将不得不使用由websocket自动发送的cookie,但是你不能自定义websocket请求发送的标头。

您还可以在有效负载中发送和接收会话令牌。详见https://devcenter.heroku.com/articles/websocket-security#authentication-authorization

相关内容

  • 没有找到相关文章

最新更新