WebSocket JS的自定义标头

max*_*dev 8 javascript php web-services websocket node.js

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

我的应用程序应该连接到基于Java的WebSocket服务器以获取实时统计信息.受Oauth2保护的WebSocket服务器.所以我的应用程序应该添加标题

"授权:持票人647d14-b132-41b9-aa4c-9eafad5d9630"

连接到WS服务器时.但我无法添加此标头,因为浏览器不支持自定义标头.回答关于Websockets客户端API中自定义标头HTTP标头的问题

我需要类似下面的代码

var serverWs = "ws://servername/stat"; var opts = { reconnection: false, transports: ['websocket'], extraHeaders: { 'Authorization': 'Bearer xxxx' } } var ws = new WebSocket(serverWs, opts);
Run Code Online (Sandbox Code Playgroud)

有什么解决方案?

mde*_*ora 5

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

其他选项是在查询字符串中使用标记。

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