【问题标题】:Can a websocket client in a browser send headers?浏览器中的 websocket 客户端可以发送标头吗?
【发布时间】:2017-02-12 23:38:42
【问题描述】:

关于浏览器发送握手标头的能力是建立 websocket 连接的一部分,在办公室里争论不休。

The websocket spec 清楚地表明标头是可能的。而且,事实上,在我的非浏览器客户端代码中,我确实设置了握手标头,并且它们在没有问题的情况下被接收。

公开辩论是:使用 javascript 插入标头的网络浏览器是否可以作为握手的一部分?该规范似乎表明没有任何反对意见,但没有人可以找到说明如何使用的客户端文档。

有很多相互矛盾的信息。这显然是可能的,因为我能够在 Java 中毫无问题地做到这一点。但是对于 Javascript,没有人知道如何。是浏览器限制吗?

澄清我的问题与其他问题有何不同:无法做到这一点是否是默认 javascript 库的限制?网络浏览器还是规范?看来这只是图书馆的限制

【问题讨论】:

标签: javascript java http websocket


【解决方案1】:

问题在于,用于在浏览器中创建 webSocket 连接的标准 API 没有提供任何设置自定义标头的机制。所以,这是 webSocket 浏览器 API 的限制。

您可以控制您发送的 URL,包括查询参数和 cookie 随请求一起发送,因此您可以使用路径、查询参数或 cookie 来发送连接请求的附加信息。

WebSocket WebSocket(
  in DOMString url,
  in optional DOMString protocols
);

【讨论】:

  • @ChristianBongiorno - 这回答了你的问题吗?
【解决方案2】:

恐怕网络浏览器中的 WebSocket API 不允许设置自定义标头。尽管如此,浏览器仍会设置 cookie(如果有)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2015-07-22
    • 2020-01-14
    • 1970-01-01
    • 2011-10-02
    • 2010-09-28
    相关资源
    最近更新 更多