Back to home

Websocket 设置认证请求头

5 min read

Websocket 只有 pathprotocol 可以被指定。

不能用 JS 给 Websocket 添加 Authorization 一类的自定义请求头

在 JavaScript WebSockets API 中没有为浏览器或 (Node) cli 添加额外请求头的方法。 只有请求路径 (“GET /xyz”) 和协议 (“Sec-WebSocket-Protocol”) 可以在 WebSocket 构造函数中指定。

var ws = new WebSocket("ws://example.com/path", "protocol");
var ws = new WebSocket("ws://example.com/path", ["protocol1", "protocol2"]);

上面代码得到的请求头分别是:

Sec-WebSocket-Protocol: protocol
Sec-WebSocket-Protocol: protocol1, protocol2

为 WebSocket 做认证的常规方案是:服务端实现一个 ticket ,客户端在建立连接后,发送第一条信息时,在 URL 或 query string 中传递这个 ticket,服务端检查其是否有效。