Hak*_* Oh 43 guid magic-string websocket
我不理解RFC 6455中"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"的含义.为什么服务器需要这个神奇的字符串?为什么WebSocket协议需要这种机制?
从Quora回答:
没有理由选择魔术弦。选择特殊的魔术字符串GUID可以为WebSockets协议增加一定程度的完整性,因为该字符串是全局唯一的。
RFC(RFC 6455-WebSocket协议)仅表示:
...将其与字符串形式的全局唯一标识符(GUID, [RFC4122])“ 258EAFA5-E914-47DA-95CA-C5AB0DC85B11”结合在一起,不理解WebSocket协议的网络端点不太可能使用它。
希望这能回答你的问题。
为什么WebSocket协议需要这种机制呢?
new WebSocket("wss://echo.websocket.org")Run Code Online (Sandbox Code Playgroud)
从调试器中我们可以看到一个101 GET,通过检查请求标头,我们可以看到这个特定的条目:
Sec-WebSocket-Key: qcq+klmT4W41IrmG3/fseA==
Run Code Online (Sandbox Code Playgroud)
这是一个唯一的哈希值,用于识别浏览器。
$client_key接收哈希值。仅保留哈希值。使用 PHP 时返回值如下所示:Sec-WebSocket-Key: qcq+klmT4W41IrmG3/fseA==
Run Code Online (Sandbox Code Playgroud)
258EAFA5-E914-47DA-95CA-C5AB0DC85B11这是与WebSocket唯一GUID连接的发送密钥的 SHA1 。Sec-WebSocket-Accept: r1Km05q03xuNRYy7mxkCRRgbh2M=
Run Code Online (Sandbox Code Playgroud)
然后浏览器检查哈希值是否与他自己的计算相匹配,这是在幕后完成的。如果是这样,则握手完成(远程服务器实际上是真正的 WebSocket 服务器),因此隧道已创建并保持活动状态。
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers
| 归档时间: |
|
| 查看次数: |
9841 次 |
| 最近记录: |