我的代码:
<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证书的完整响应?
谢谢。
答案 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,那对您来说是完全透明的,也没有任何信息可用。