Sec-WebSocket-Protocol 頭

Baseline 已廣泛支援

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

HTTP Sec-WebSocket-Protocol 請求頭響應頭用於 WebSocket 開啟握手,以協商在通訊中使用的子協議。這可以是一個廣為人知的協議,例如 SOAP 或 WAMP,也可以是客戶端和伺服器理解的自定義協議。

在請求中,該頭按偏好順序指定一個或多個 WebSocke 子協議,web 應用程式希望使用這些協議。這些協議值可以作為多個頭中的協議值新增,也可以作為逗號分隔的值新增到單個頭中。

在響應中,它指定伺服器選擇的子協議。這必須是伺服器從請求頭提供的列表中支援的第一個子協議。

請求頭由瀏覽器使用應用程式在 WebSocket()protocols 引數中指定的值自動新增和填充。伺服器選擇的子協議在 WebSocket.protocol 中提供給 web 應用程式。

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

語法

http
Sec-WebSocket-Protocol: <sub-protocols>

指令

<sub-protocols>

一個逗號分隔的子協議名稱列表,按偏好順序排列。子協議可以從 IANA WebSocket 子協議名稱登錄檔中選擇,也可以是客戶端和伺服器共同理解的自定義名稱。

作為響應頭,這是伺服器選擇的單個子協議。

示例

WebSocket 開啟握手

子協議在原始 WebSocket 握手請求中指定。下面的請求顯示客戶端偏好 soap,但也支援 wamp

http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Protocol: soap, wamp

以這種方式指定協議具有相同的效果。

http
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp

伺服器的響應將包含 Sec-WebSocket-Protocol 頭,選擇它從客戶端偏好列表中支援的第一個子協議。如下所示為 soap

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

規範

規範
WebSocket 協議
# section-11.3.4

瀏覽器相容性

另見