Sec-WebSocket-Extensions header
HTTP Sec-WebSocket-Extensions 请求头和响应头用于 WebSocket 建立连接的握手过程中,以协商客户端和服务器使用的协议扩展。
在请求中,该头指定了一个或多个 Web 应用程序希望使用的扩展,按优先级排序。这些可以作为多个头添加,或者作为逗号分隔的值添加到单个头中。每个扩展还可以有一个或多个参数——这些参数是分号分隔的值,列在扩展之后。
在响应中,该头只能出现一次,它指定服务器从客户端偏好中选择的扩展。此值必须是服务器支持的、在请求头提供的列表中出现的第一个扩展。
请求头由浏览器根据其自身功能自动添加,不依赖于创建 WebSocket
时传递给构造函数的参数。
语法
http
Sec-WebSocket-Extensions: <extensions>
指令
<extensions>
-
一个逗号分隔的扩展列表,用于请求(或服务器同意支持)。这些通常选自 IANA WebSocket 扩展名称注册表(也可以使用自定义扩展)。带有参数的扩展用分号分隔参数。
示例
WebSocket 开启握手
下面的 HTTP 请求显示了初始握手过程,其中客户端支持 permessage-deflate
扩展(带有 client_max_window_bits
参数)和 bbf-usp-protocol
扩展。
http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, bbf-usp-protocol
下面为每个扩展使用单独头部的请求是等效的
http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Extensions: bbf-usp-protocol
以下响应可能由服务器发送,表示它将支持 permessage-deflate
扩展
http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Extensions: permessage-deflate
规范
规范 |
---|
WebSocket 协议 # 第 11.3.2 节 |
浏览器兼容性
加载中…
另见
Sec-WebSocket-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Protocol
- 《编写 WebSocket 服务器》中的WebSocket 握手和子协议