在 Dart 中从浏览器向 websocket 连接添加额外的 headers

Add extra headers to websocket connection from browser in Dart

我正在尝试建立经过身份验证的 websocket 连接,这个问题是 similar question for server part 的同级问题。 当我从浏览器建立 websocket 连接时,如何添加额外的 headers?

我正在尝试使用 dart:html 的 WebSocket object 连接到需要包含当前身份验证令牌 (JWT) 的 header authentication: 的服务器以对用户进行身份验证.问题是 WebSocket 在调用构造函数后立即建立连接,它没有任何参数可以通过 http 请求发送 headers:

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

在该字符串之后,websocket 连接因错误而关闭,因为我的服务器拒绝所有在 headers 中不包含身份验证令牌的请求到该路径。

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

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

我不是安全专家,但在路径请求中发送令牌而不是 headers 是否安全?类似于:

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

您还必须使用由 websocket 自动发送的 cookie,但您无法自定义 headers 通过 WebSocket 请求发送的 cookie。

您还可以在负载中发送和接收 session 令牌。有关详细说明,请参阅 https://devcenter.heroku.com/articles/websocket-security#authentication-authorization