我正在使用 React Native Cookies 库在前端设置 cookie。我注意到我的 Axios 客户端会自动检测 cookie 并将其附加到设置 cookie 后发生的所有请求。
现在我还需要将 cookie 附加到使用 @rails/actioncable 的 WebSocket 连接。我希望它能像 Axios 一样开箱即用,但事实似乎并非如此。我搜索了文档,但找不到任何与此相关的内容,这让我认为使用 @rails/actioncable 要么非常简单,要么不可能。
这可能就是您所需要的:
document.cookie = "mycookie=value; SameSite=strict;";
确保这发生在
ActionCable.createConsumer()
之前。
为什么? Action Cable 所依赖的 WebSocket API 将连接设置委托给用户代理,因此它是浏览器 GET 的默认设置。
但是不幸的是,WebSockets 不执行 CORS,因此如果没有 SameSite=strict 标签,您很容易受到 CSRF 的攻击。