所以我正在使用react native websockets但是无法弄清楚如何在websockets中包含cookie,有什么建议吗?
答案 0 :(得分:4)
目前没有自动方式。 WebSocket构造函数有第三个(未记录的)参数,用于将自定义HTTP标头传递给连接请求。
WebSocket(url, '', {Cookie: 'key=value'});
这适用于iOS,我没有在Android上测试它,但WebSocket实现看起来也支持它。
如果您只需要传递会话ID或身份验证令牌,则可能更容易将其作为URL中的GET参数传递。在快速变化的框架中依赖未记录的行为可能是危险的。
答案 1 :(得分:1)
如果查看WebSocket声明,可以看到标题键应该是字符串。
这对我有用:
var headers = {};
headers["cookie"] = `cookieName=${cookieValue}`;
const ws = new WebSocket(`wss://www.somesite.com/socket`, null, {
headers
});
不是这个
:{
headers: {
cookie: `cookieName=${cookieValue}`
}
}
答案 2 :(得分:0)
从React Native 0.38开始,这应该是Android上的happen automatically。
目前还有an open PR让它在iOS上自动运行,但目前看来还有一些工作还在测试中。
同时,您可以按照here提出的“手动方法”:
手动方法是通过cookie管理器插件检索cookie并将其作为标题传递给Web套接字。
(一旦你从经理那里得到了cookie,就像previously所提到的那样,将它传递给websocket的方法就是使用WebSocket
的未记录的第三个参数。)