Sec-WebSocket-Version 头

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

HTTP Sec-WebSocket-Version 请求响应头用于 WebSocket 开启握手中,以表明客户端支持的 WebSocket 协议版本,以及如果服务器支持请求中指定的版本,则表明服务器支持的协议版本。

此头在请求中只能出现一次,并指定 Web 应用程序正在使用的 WebSocket 版本。在撰写本文时,协议的当前版本是 13。当建立 WebSocket 连接时,用户代理会自动将此头添加到请求中。

服务器使用此版本来确定它是否能够理解协议。如果服务器不支持该版本,或者握手中的任何头不被理解或具有不正确的值,服务器应发送状态为 400 Bad Request 的响应,并立即关闭套接字。它还应在 400 响应中包含 Sec-WebSocket-Version,列出它所支持的版本。版本可以在单独的头中指定,也可以作为逗号分隔的值在单个头中指定。

如果服务器理解客户端指定的版本,则不应在响应中发送此头。

头类型 响应头
禁止请求头 是 (Sec- 前缀)

语法

Request

http
Sec-WebSocket-Version: <version>

响应(仅在错误时)

http
Sec-WebSocket-Version: <server-supported-versions>

指令

<版本>

客户端在与服务器通信时希望使用的 WebSocket 协议版本。此数字应是 IANA WebSocket 版本号注册表中列出的最新版本。WebSocket 协议的最新最终版本是版本 13。

<服务器支持的版本>

出现错误时,服务器支持的 WebSocket 协议版本列表,用逗号分隔。如果支持 <版本>,则不发送此头。

示例

WebSocket 开启握手

客户端支持的版本在原始 WebSocket 握手请求中指定。对于当前协议,版本是“13”,如下所示。

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

如果服务器支持协议版本 13,则 Sec-WebSocket-Version 不会出现在响应中。

规范

规范
WebSocket 协议
# section-11.3.5

浏览器兼容性

另见