【问题标题】:Add extra headers to websocket connection from browser in Dart在 Dart 中从浏览器向 websocket 连接添加额外的标头
【发布时间】:2015-05-26 10:32:39
【问题描述】:

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

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

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

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

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

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

我不是安全专家,但在路径请求而不是标头中发送令牌是否安全?比如:

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

【问题讨论】:

  • 我假设 stackoverflow.com/questions/4361173 同样适用于 Dart。
  • 真丢脸。我认为这个限制与 dart 实现有关,并没有检查 javascript 问题。
  • 没有问题,我自己在调查时学到了一些新东西:)

标签: security authentication websocket dart dart-html


【解决方案1】:

您也必须使用由 websocket 自动发送的 cookie,但您不能自定义随 WebSocket 请求发送的标头。

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

【讨论】:

    猜你喜欢
    • 2013-01-11
    • 2017-12-27
    • 2012-10-14
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多