Sec-WebSocket-Accept 頭

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

HTTP Sec-WebSocket-Accept 響應頭用於 WebSocket 開啟握手,表示伺服器願意升級到 WebSocket 連線。

此頭在響應中最多隻能出現一次,其指令值根據相應請求中傳送的 Sec-WebSocket-Key 請求頭計算。

頭型別 響應頭
禁止請求頭 是 (Sec- 字首)

語法

http
Sec-WebSocket-Accept: <hashed key>

指令

<hashed key>

如果提供了 Sec-WebSocket-Key 頭,則此頭的值的計算方法是:取鍵的值,連線字串 258EAFA5-E914-47DA-95CA-C5AB0DC85B11,然後對連線後的字串進行 SHA-1 雜湊 — 得到一個 20 位元組的值。然後將該值進行 base64 編碼以獲得此屬性的值。

示例

WebSocket 開啟握手

客戶端將透過以下請求發起 WebSocket 握手。請注意,這最初是一個 HTTP GET 請求(HTTP/1.1 或更高版本),幷包含 Upgrade 頭,表示意圖升級到 WebSocket 連線。它還包含 Sec-WebSocket-Key,用於計算 Sec-WebSocket-Accept,以確認將連線升級到 WebSocket 連線的意圖。

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 頭計算,並確認將連線升級到 WebSocket 連線的意圖。

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

規範

規範
WebSocket 協議
# 第 11.3.3 節

瀏覽器相容性

另見