Sec-WebSocket-Protocol 頭
HTTP Sec-WebSocket-Protocol 請求頭和響應頭用於 WebSocket 開啟握手,以協商在通訊中使用的子協議。這可以是一個廣為人知的協議,例如 SOAP 或 WAMP,也可以是客戶端和伺服器理解的自定義協議。
在請求中,該頭按偏好順序指定一個或多個 WebSocke 子協議,web 應用程式希望使用這些協議。這些協議值可以作為多個頭中的協議值新增,也可以作為逗號分隔的值新增到單個頭中。
在響應中,它指定伺服器選擇的子協議。這必須是伺服器從請求頭提供的列表中支援的第一個子協議。
請求頭由瀏覽器使用應用程式在 WebSocket() 的 protocols 引數中指定的值自動新增和填充。伺服器選擇的子協議在 WebSocket.protocol 中提供給 web 應用程式。
語法
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 |
瀏覽器相容性
載入中…
另見
Sec-WebSocket-AcceptSec-WebSocket-KeySec-WebSocket-VersionSec-WebSocket-Extensions- 《編寫 WebSocket 伺服器》中的WebSocket 握手和子協議