Javascript 未发送跨域 Cookie Websocket

Javascript Cross Domain Cookie Websocket not being sent

我正在通过 document.cookie = 'foo=bar;secure;path=/;' 设置 cookie,并且正在连接到 WebSocket。我已经尝试了 samesite=None 和许多其他变体 none 都成功了,所以我有点卡住了。我想使用这个 cookie 进行身份验证(它实际上是一个 jwt 和一对特定的 api 密钥)。

流量为:

当前端应用程序和后端应用程序都在本地主机上时,这在本地工作。

当部署两个应用程序时,前端应用程序神奇地没有发送 cookie。它们都托管在 heroku 上,并分别指向子域 x.mysite.com 和 y.mysite.com。

是否有我需要注意的特定浏览器行为?

提前致谢。

由于CSRF attacks, browsers do not allow access to cookies from one domain to an application on another domain. Even subdomains of the same domain are not allowed by default. To enable cookies shared across domains, you have to specify it as described in this answer。 这意味着如果你想 mysite.com, x.mysite.com, y.mysite.com 访问同一个 cookie,你必须这样设置你的 cookie:

Set-Cookie: name=value; domain=mysite.com

在 Django 中,您可以使用 SESSION_COOKIE_DOMAIN 设置来实现此目的。所以在你的设置文件中,你可以有:

SESSION_COOKIE_DOMAIN = os.environ.get('SESSION_COOKIE_DOMAIN', 'mysite.com')