javascript - 获得 Websocket 连接的完整响应

标签 javascript html ssl websocket http-headers

我的代码:

<script>
// Create WebSocket connection.
const socket = new WebSocket('wss://echo.websocket.org:443');

// Connection opened
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// Listen for messages
socket.addEventListener('message', function (event) {
    console.log('Message from server', event.data);
});
</script>

输出:

Message from server Hello Server!

我的问题是,是否可以获得包含 HTTP header 和 TLS 证书的完整响应?

谢谢。

最佳答案

My question is, is it possible to get the full response that includes the HTTP Header and the TLS certificate?

不,不是。浏览器中的 WebSocket 接口(interface)不公开该信息。 HTTP 用于建立初始的 WebSocket 连接,但之后协议(protocol)更改为 WebSocket 协议(protocol),不再使用 HTTP。 WebSockets 的浏览器接口(interface)不公开自定义 header 。您可以请求一个 URL(带有协议(protocol)、端口、域、路径、查询字符串等),您可以发送零个或多个子协议(protocol)字符串。就是这样。

来自 MDN,这是建立 WebSocket 连接的接口(interface):

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

一旦连接从 HTTP 升级到 WebSocket 协议(protocol),就不再有 HTTP header 了。如您所见here on MDN,该数据在 WebSocket 帧中发送.在该数据帧格式中,除了用于描述帧和管理安全性的内务字节外,您将从该帧中获取所有有效负载数据。那里没有标题。

如果连接是 TLS,这对您来说是完全透明的,并且也不会提供任何信息。

关于javascript - 获得 Websocket 连接的完整响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43141900/

相关文章:

Javascript 如何将 DIV 保持在窗口边界内

javascript - 更新不可变对象(immutable对象)而不破坏 JavaScript 中的不变性

javascript - 单击图像到 div 时如何显示文本

javascript - 如何在 ReactJs typescript 中将多个枚举值传递给变量

javascript - 为什么我得到 "Cannot read property of html undefined"?

html - 重要的;标签

html - 链接背景图像在加载之间消失

python - django_cas_ng 抛出 ssl 错误

SSL springboot 验证连接器的配置

apache - 如何使用 Apache httpd 重定向两个不同的端口?