WebSocket是一种在单个TCP连接上进行全双工通信的协议,允许客户端和服务器之间建立持久连接。在WebSocket握手阶段,客户端会发送一个HTTP请求,其中包含特定的HTTP标头(Headers),用于协商协议升级(从HTTP到WebSocket)。这些标头在建立WebSocket连接时至关重要。
websocket
Upgrade
13
(当前主流版本)。chat
、soap
等)。https://example.com
)。Sec-WebSocket-Protocol
)。Sec-WebSocket-Key
和Origin
标头防止非法连接。Upgrade
或Connection
未正确设置)。Sec-WebSocket-Key
是有效的Base64字符串。Origin
验证或CORS。Origin
标头,或返回Access-Control-Allow-Origin
。Sec-WebSocket-Protocol
与服务器不匹配。const socket = new WebSocket('wss://example.com/ws', ['chat', 'json']); // 指定子协议
socket.onopen = () => {
console.log('连接已建立');
};
socket.onerror = (error) => {
console.error('握手失败:', error);
};
成功握手时,服务器需返回以下标头:
HTTP 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept
(由客户端的Sec-WebSocket-Key
计算生成)Origin
)。wss://
)需配置TLS证书。通过正确理解和使用这些标头,可以确保WebSocket连接的稳定性和安全性。
没有搜到相关的文章