【发布时间】:2020-06-29 17:58:49
【问题描述】:
我在一个网站上https://aaa.shared.com。该网站(称为A)向url https://zzz.shared.com/some/path(网站Z)发送xhr 请求,并收到带有以下标头的响应:
access-control-allow-credentials: true
access-control-allow-origin: aaa.shared.com
set-cookie: foo=bar; expires=Fri, 01 Jan 2100 00:00:00 GMT; path=/; secure; samesite=none; httponly
(我关注answer on this question添加access-control标头)
现在,我期望的是,无论何时我在 A 或 Z 上,每当请求到达 到 Z (跨域或同源,重要的是请求的 URL)浏览器会添加 cookie,但它不会!此外,我看不到它在浏览器开发工具(F12 -> 应用程序 -> Cookies)中设置。我正在使用 Chrome,但目标是跨浏览器解决方案。
我错过了什么?我发现很难找到有关Set-Cookie 标头在请求不同来源时如何工作的详细信息。
编辑:rowan_z 最初建议将 samesite=lax 替换为 samesite=none,因为此问题的第一个版本中的 A 和 Z 是完全独立的域(仅共享 .com 部分)。我试过了,但没有帮助。但是现在我意识到它们实际上被视为SameSite,因为它们位于shared.com域的不同子域上。所以现在我相信samesite=lax 也应该在这里工作。
更新:
最后,我只是将应用程序aaa.shared.com 移动到具有某些路径zzz.shared.com/aaa/path 的同一子域下,因为处理cookie 和CORS 非常困难。此外,将其配置为使用 localhost 会增加额外的复杂性。
【问题讨论】:
-
将 cookie 的域设置为“shared.com”,如下所述:stackoverflow.com/a/60730433/4448410 您根本没有设置域属性,因此默认情况下它可能设置为“aaa.shared” .com”
标签: http cookies cors cross-domain