WebSocket JS的自定义标头

时间:2016-10-04 13:07:32

标签: javascript php node.js web-services websocket

我找到了一个简单的解决方案,使用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);

存在什么解决方案?

2 个答案:

答案 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 )