Sec-WebSocket-Key
Sec-WebSocket-Key HTTP 請求頭 用於 WebSocket 開啟 握手 以允許客戶端(使用者代理)確認它“確實希望”請求將 HTTP 客戶端升級為 WebSocket。
金鑰的值是使用 WebSocket 規範中定義的演算法計算的,因此這 *不提供安全性*。 相反,它有助於防止非 WebSocket 客戶端無意中或因誤用而請求 WebSocket 連線。
此標頭在指令碼開啟 WebSocket 時由使用者代理自動新增;它不能使用 fetch() 或 XMLHttpRequest.setRequestHeader() 方法新增。
伺服器的 Sec-WebSocket-Accept 響應頭應包含根據指定的金鑰值計算的值。 然後,使用者代理可以在確認連線之前驗證此值。
語法
http
Sec-WebSocket-Key: <key>
指令
- <key>
-
此升級請求的金鑰。 這是一個隨機選擇的 16 位元組 nonce,已進行 Base64 編碼和同構編碼。 使用者代理在啟動 WebSocket 連線時新增此金鑰。
示例
客戶端將使用類似於以下內容的請求啟動 WebSocket 握手。 請注意,這首先是 HTTP GET 請求(HTTP/1.1 或更高版本),除了 Sec-WebSocket-Key 之外,請求還包含 Upgrade 標頭,指示從 HTTP 升級到 Web 套接字的意圖。
http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
伺服器的響應應包含 Sec-WebSocket-Accept 標頭,其值為根據請求中的 Sec-WebSocket-Key 標頭計算的值,並確認將連線升級到 Web 套接字的意圖
http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
規範
| 規範 |
|---|
| 未知規範 # 第 11.3.1 節 |
瀏覽器相容性
BCD 表格僅在瀏覽器中載入
另請參閱
Sec-WebSocket-AcceptSec-WebSocket-VersionSec-WebSocket-ProtocolSec-WebSocket-Extensions- WebSocket 握手 在 *編寫 WebSocket 伺服器* 中
- HTTP 協議升級機制