我找到了一个简单的解决方案,使用WebSocket和基于PHP的Web应用程序的自定义标头作为后端,js + vuejs作为前端。
我的应用程序应该连接到基于Java的WebSocket服务器以获取实时统计信息。受Oauth2保护的WebSocket服务器。所以我的应用应该添加标题,如
“授权:持票人647d14-b132-41b9-aa4c-9eafad5d9630”
连接到WS服务器时。但我无法添加此标头,因为浏览器不支持自定义标头。回答有关自定义标题HTTP headers in Websockets client API
的问题我需要类似下面的代码
var serverWs = "ws://servername/stat"; var opts = { reconnection: false, transports: ['websocket'], extraHeaders: { 'Authorization': 'Bearer xxxx' } } var ws = new WebSocket(serverWs, opts);
存在什么解决方案?
答案 0 :(得分:0)
Websocket客户端API不允许发送自定义标头,它们允许您设置一个标头,即Sec-WebSocket-Protocol,即特定于应用程序的子协议。您可以使用此标头传递持票人令牌。
其他选项是在查询字符串中使用令牌。
或者您可以在客户端或服务器上使用某些支持自定义标头实现的库,例如。 https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo_httpheaders
答案 1 :(得分:-4)
我对websocket和标头的大量错误信息感到困惑。有一种方法可以将标头添加到WebSocket连接。
赞
options.headers= {"header1":"value"}
const socket = new WebSocket('wss://yourwebsocketAPIpath', [],options )