我正在尝试建立一个经过身份验证的 websocket 连接,这个问题是 similar question for server part 的兄弟问题。 。 当我从浏览器建立 websocket 连接时,如何添加额外的 header ?
我正在尝试使用dart:html
的 WebSocket 对象连接到需要 header 的服务器 authentication:
包含当前身份验证 token (JWT) 以对用户进行身份验证。问题是 WebSocket 在调用构造函数后立即建立连接,该构造函数没有任何参数来通过 http 请求发送 header :
var ws = new WebSocket('wss://localhost:8080/ws');
在该字符串之后,websocket 连接将关闭并出现错误,因为我的服务器拒绝该路径 header 中不包含身份验证 token 的所有请求。
浏览器端是否有其他允许验证 Websocket 连接的 Websocket 实现?
是否有可能为浏览器编写不同的 WebSocket 实现?
我不是安全专家,但是在路径请求中发送 token 而不是 header 是否安全?像这样的东西:
wss://localhost:8080/ws?token=BLAHBLAHBLAH
最佳答案
您还必须使用由 websocket 自动发送的 cookie,但您无法自定义通过 WebSocket 请求发送的 header 。
您还可以在负载中发送和接收 session token 。请参阅https://devcenter.heroku.com/articles/websocket-security#authentication-authorization以获得更详细的解释。
关于security - 在 Dart 中从浏览器向 websocket 连接添加额外的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456022/