在React Electron App中为WebSocket添加授权头

8ljdwjyq  于 2023-09-28  发布在  Electron
关注(0)|答案(1)|浏览(123)

我正试图连接到第三方安全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",
        }});

我绝对是在我的智慧结束,并希望在找出一个工作解决方案的一些帮助。

pjngdqdw

pjngdqdw1#

我最近遇到了这个问题,经过大量的研究,我发现你目前不能在JavaScript中向WebSocket URL添加授权头。你可以做的最接近的是传入access_token作为查询参数,就像你在这里做的那样:

const [socketUrl, setSocketUrl] = useState('wss://messaging.thirdPartyService.com/?access_token=My.JWT.Token');

但是,要做到这一点,API必须更改结构以从查询参数中获取令牌。
你可以检查这个线程的更多信息。

相关问题