我找到了一个简单的解决方案,使用 WebSocket 和基于 PHP 作为后端、js+vuejs 作为前端的 Web 应用程序的自定义标头。
我的应用程序应该连接到基于 Java 的 WebSocket 服务器以获取实时统计数据。受 Oauth2 保护的 WebSocket 服务器。所以我的应用程序应该添加标题,例如
“授权:持有者647d14-b132-41b9-aa4c-9eafad5d9630”
当连接到 WS 服务器时。但我无法添加此标头,因为浏览器不支持自定义标头。回答有关自定义标头的问题Websockets 客户端 API 中的 HTTP 标头 https://stackoverflow.com/questions/4361173/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);
存在什么解决方案?
Websocket 客户端 API 不允许发送自定义标头,它们允许您仅设置一个标头,即 Sec-WebSocket-Protocol,即应用程序特定的子协议。您可以使用此标头来传递不记名令牌。
其他选项是在查询字符串中使用标记。
或者您可以在客户端或服务器上使用一些支持自定义标头实现的库,例如。https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo_httpheaders https://github.com/crossbario/autobahn-python/tree/master/examples/twisted/websocket/echo_httpheaders
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)