WebSocket JS的自定义头

Custom headers for WebSocket JS

本文关键字:自定义 JS WebSocket      更新时间:2023-09-26

我找到了一个简单的解决方案,使用WebSocket自定义头基于PHP作为后端和js+ vejs作为前端的web应用程序。

我的应用程序应该连接到基于Java的WebSocket服务器以获得实时状态,WebSocket服务器受Oauth2保护。所以我的应用程序应该添加header,比如

"授权:承载647d14-b132-41b9-aa4c-9eafad5d9630 "

连接到WS服务器。但是我不能添加这个标题,因为浏览器不支持自定义标题。关于Websockets客户端API中自定义报头的问题解答

我需要一些类似于

下面的代码
var serverWs = "ws://servername/stat"; var opts = { reconnection: false, transports: ['websocket'], extraHeaders: { 'Authorization': 'Bearer xxxx' } } var ws = new WebSocket(serverWs, opts);

存在什么解?

Websocket客户端API不允许发送自定义报头,它们允许您设置一个报头,即Sec-WebSocket-Protocol,即应用程序特定的子协议。您可以使用此报头来传递承载令牌。

另一个选项是在查询字符串中使用token。

或者你可以在客户端或服务器端使用一些支持自定义头实现的库。https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo_httpheaders