使用本机 websockets 发送 cookie

IT技术 cookies reactjs websocket react-native
2021-05-05 07:59:13

所以我正在使用 react native websockets但不知道如何在 websockets 中包含 cookie,有什么建议吗?

3个回答

目前还没有自动的方法来做到这一点。WebSocket 构造函数还有第三个(未记录的)参数,用于将自定义 HTTP 标头传递给连接请求。

WebSocket(url, '', {Cookie: 'key=value'});

这适用于 iOS,我还没有在 Android 上测试过,但 WebSocket 实现看起来也受支持。

如果您只需要传递会话 ID 或身份验证令牌,则将其作为 GET 参数传递到 url 中可能更容易。在快速变化的框架中依赖无证行为可能是危险的。

如果您查看 WebSocket 声明,您会发现标头键应该是字符串。

这对我有用:

var headers = {};
headers["cookie"] = `cookieName=${cookieValue}`;

const ws = new WebSocket(`wss://www.somesite.com/socket`, null, {
    headers
});

不是这个:

{
  headers: {
    cookie: `cookieName=${cookieValue}`
  }
}

从 React Native 0.38 开始,这应该在 Android 上自动发生

目前有一个开放的 PR可以让它在 iOS 上自动运行,但目前似乎还有一些工作需要围绕测试进行。

同时,您可以遵循此处提出的“手动方法”

手动方法是通过 cookie 管理器插件检索 cookie,并将其作为标头传递给 Web 套接字。

(一旦你从管理者的饼干,顺便将它传递给WebSocket的是,如提及以前,使用的无证第三个参数WebSocket。)