我正试图连接到第三方安全WebSocket,它通过Header使用Bearer Auth。根据这里和其他地方的大多数答案,设置头是不支持通过WebSockets的。我该如何在Electron应用程序中的React中做到这一点?我正在使用'react-use-WebSocket'包,但在这个阶段,它对任何以组件为中心的解决方案都是开放的。
我尝试了以下配置,试图发送头部或提供我的JWT的Auth,但在尝试打开连接时重复接收HTTP Authentication failed; no valid credentials available
,连接随后关闭。
const [socketUrl, setSocketUrl] = useState('wss://[email protected]/?access_token=My.JWT.Token');
const [socketUrl, setSocketUrl] = useState('wss://messaging.thirdPartyService.com/?access_token=My.JWT.Token');
const { sendMessage, sendJsonMessage, lastMessage, readyState } = useWebSocket(socketUrl, {
headers: {
['Authorization']: "Bearer " + "My.JWT.Token",
}});
我绝对是在我的智慧结束,并希望在找出一个工作解决方案的一些帮助。
1条答案
按热度按时间pjngdqdw1#
我最近遇到了这个问题,经过大量的研究,我发现你目前不能在JavaScript中向WebSocket URL添加授权头。你可以做的最接近的是传入access_token作为查询参数,就像你在这里做的那样:
但是,要做到这一点,API必须更改结构以从查询参数中获取令牌。
你可以检查这个线程的更多信息。