获取Websocket连接的完整响应

时间:2017-03-31 13:25:15

标签: javascript html5 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标头和TLS证书的完整响应?

谢谢。

1 个答案:

答案 0 :(得分:1)

  

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

不,不是。浏览器中的WebSocket接口不会公开该信息。 HTTP用于建立初始WebSocket连接,但之后,协议将更改为WebSocket协议,并且不再使用HTTP。 WebSockets的浏览器界面不会公开自定义标头。您可以请求URL(包括协议,端口,域,路径,查询字符串等),您可以发送零个或多个子协议字符串。那就是它。

从MDN,这是建立WebSocket连接的接口:

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

一旦连接从HTTP升级到WebSocket协议,就不再有HTTP头了。您可以在here on MDN中看到该数据在WebSocket框架中发送。在该数据帧格式中,您将获得该帧的所有有效载荷数据,而不是用于描绘帧和管理安全性的管家字节。那里没有标题。

如果连接是TLS,那对您来说是完全透明的,也没有任何信息可用。