【问题标题】:Safari removing Sec-WebSocket-Extensions header from responseSafari 从响应中删除 Sec-WebSocket-Extensions 标头
【发布时间】:2019-08-02 14:15:57
【问题描述】:

我正在尝试在 Node 中添加一个 Web 套接字扩展,其行为类似于 permessage-deflate。我的问题是一切正常,直到点节点发回它与 Sec-WebSocket-Extensions: x-webkit-deflate-frame 的握手。来自 Safari 的请求包含此内容,但如果我将其包含在尝试告诉 Safari 继续使用压缩的响应中,它永远不会显示为“网络”选项卡中的标题。我已通过 Wireshark 确认我们将在响应中发送它,但我无法弄清楚为什么 safari 会删除它。我找遍了所有可能的地方,但似乎没有人遇到这个问题。

我也尝试过使用:

Sec-WebSocket-Extensions: x-webkit-deflate-frame; server_no_context_takover

Sec-WebSocket-Extensions: x-webkit-deflate-frame; no_context_takover

Sec-WebSocket-Extensions: x-webkit-deflate-frame; client_no_context_takeover

Sec-WebSocket-Extensions: x-webkit-deflate-frame; server_no_context_takeover; client_no_context_takeover

每当我使用任何无上下文接管时,Safari 都会从响应标头中删除所有内容。

【问题讨论】:

  • 额外的细节是什么?为什么你认为 Safari 会支持它们?它在x-webkit-deflate-frame 规范中吗?
  • @Myst,我想你很困惑。除了回复Sec-WebSocket-Extensions: x-webkit-deflate-frame 之外,我还尝试了其他的细节,看看这些是否能奏效。
  • 我在开发自己的网络套接字服务器时实际上遇到了同样的问题,因此提供了一个答案。希望有用
  • 那么你设法解决了这个问题吗?

标签: websocket safari compression mobile-safari


【解决方案1】:

如果您回复“Sec-WebSocket-Extensions: x-webkit-deflate-frame”并且实际上您的 WebSocket 服务器支持压缩,那么它应该可以工作。我只是自己测试了这个。

至于为什么 Safari 隐藏了你的响应头,我不知道。再次,使用 Wireshark 进行测试和检查 - 压缩有效。当我发送 1000 字节(char 'A' 重复 1000 次)时,数据包约为 1064 字节,当我在服务器上启用压缩时,数据包约为 76 字节。

【讨论】:

  • 顺便说一下,当我大约一年前创建我的 WebSocket 服务器的第一个版本时,据我所知,我可以看到响应“Sec-WebSocket-Extensions”标头。也许这与较新版本的 Safari 有关?
猜你喜欢
  • 1970-01-01
  • 2012-06-24
  • 2015-10-26
  • 2019-04-05
  • 2019-11-12
  • 1970-01-01
  • 2013-12-09
  • 2012-03-10
  • 2017-03-04
相关资源
最近更新 更多