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-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Extensions
- 《编写 WebSocket 服务器》中的WebSocket 握手和子协议