首页 > 解决方案 > 没有“SameSite”属性的 Cookie 在不同的子域上发送

问题描述

因此,我已经阅读了Chrome 80 的 cookie 默认为 SameSite=Lax的信息,并且和你们其他人一样,我现在正试图确定这将对我的网站产生的影响。

我正在运行的网站分为几个子域,每个子域都使用自己的 cookie。它看起来像这样:

由于这些 cookie 没有指定SameSite属性,因此它们应该被视为Lax在 Chrome 80 上,因此应该仅限于同站点请求(除非它是顶级导航)。

然后,根据SameSite cookie 解释

如果用户在your-project.github.io上并从my-project.github.io请求图像, 这就是跨站点请求。

因此,当我启用“SameSite 默认 cookie”和“没有 SameSite 的 Cookie 必须是安全的”标志时,我惊讶地发现当first-site.domain.com将second-site.domain.com嵌入框架时,Cookie2是仍然被发送到second-site.domain.com,这似乎是矛盾的。

肯定是我误会了什么,但此刻,我还是很疑惑。

注意:我已经验证,当我将 second-site.domain.com 嵌入到anotherdomain.com的框架中时浏览器不会发送 cookie(如预期的那样)。

标签: google-chromecookiessamesite

解决方案


如果“domain.com”在公共后缀列表中,则 subdomain1.domain.com 和 subdomain2.domain.com 被视为不同的站点。否则,它们被视为同一个站点。

与 SameSite cookie 相关的“站点”概念是 eTLD+1(有效顶级域 + 1 标签)。有效的顶级域名类似于 .com 或 .co.uk 或 .github.io。所有 eTLD 都列在公共后缀列表中。

eTLD+1 是有效的顶级域加上紧靠其左侧的 1 标签。eTLD+1 也称为“可注册域”。直觉是两个不同的 eTLD+1 由不同的实体控制,并且作为同一 eTLD+1 的子域的所有内容都由同一实体控制。例如,mysite.github.io 与 yoursite.github.io 是不同的 eTLD+1,因为我无法修改您的站点,而您也无法修改我的站点。另一方面,同一家公司同时拥有 subdomain1.domain.com 和 subdomain2.domain.com 并修改这两个站点。

如果两个域名的 eTLD+1 相同,则出于 SameSite cookie 的目的,它们被视为同一个站点。


推荐阅读