gpt4 book ai didi

javascript - 使用 WebSocket 握手无法跨域传递 cookie 吗?

转载 作者:行者123 更新时间:2023-12-01 16:27:04 24 4
gpt4 key购买 nike

上下文:

我正在本地开发一个前端应用程序,调用 API 等跨域(从本地网络内的另一台机器上的本地开发服务器到我们的服务器)。由于我们的本地网络是隔离的,后端服务器启用了不会导致安全问题的 CORS;这在生产中有所不同(CORS 被禁用)。

我们在我们的应用程序中引入了 WebSocket 连接,并通过授权来保护它,我们在握手时添加了 cookie 检查。 (XHR 请求通过 Authorization header 授权,cookie 不在那里使用;但它们实际上 can 被使用; WebSocket interface 只允许一组 limited header ,如果我们不通过 WS 消息授权,cookie 似乎成为唯一明智的选择;好吧,事实上我没有找到是否可以在没有浏览器标准提示的情况下实现基本 HTTP 身份验证,以及如何做到这一点)

问题:

虽然这实际上适用于生产(当前端和后端在同一个域中时),并且 cookie 在 Cookie 内的握手请求中发送 header (代码很简单:我只是在获取身份验证 token 后设置了 cookie),这在开发环境(本地主机 + 另一个域的后端)中不起作用:Cookie握手中没有 header 。 link above显示 XHR 需要 withCredentials尝试跨域传递cookie的选项;但是,对于 WS 是否有类似的东西,我还没有找到明确的答案。 Here类似问题的作者只是假设没有这样的事情,但真的是这样吗?

最佳答案

仔细检查您正在使用的 cookie 是否设置为 SameSite=None 并且是 secure !
我遇到了同样的问题,认为 cookie 没有被发送,因为 chrome 检查器没有在 websocket 连接请求中显示它们,但是一旦你将它们标记为相同的站点 nonesecure .
或者,要快速检查这是否是问题所在,您可以禁用 SameSite要求在 chrome://flags/

关于javascript - 使用 WebSocket 握手无法跨域传递 cookie 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com