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 表格僅在瀏覽器中載入

另請參閱