不同子域上的会话cookie是否算作第三方?

Ros*_*ssJ 12 cookies subdomain iframe privacy

假设我在www.example.com上有一个站点,它有一个IFRAME指向ASP.NET站点myapp.othersite.com - 这会导致会话和第三方cookie的问题,我理解.

如果我将嵌入式应用程序移动到myapp.example.com,会话cookie是否会被视为第三方cookie,因为它是一个不同的子域?

Yog*_*ati 9

如果您在域上设置Cookie .example.com

然后来自www.example.comwww.myapp.example.com的cookie 将被视为相同.

没有cookie被视为第三方cookie.


Bew*_*ein 9

如果Cookie来自不同的基本域(基本域是example.comexample.co.uk),则它们似乎被视为第三方,但如果它们来自同一基本域的不同子域,则不会.

myapp.example.com如果嵌入在域中,将能够使用域设置 cookie .myapp.example.comwww.example.com

myapp.example.com设置Cookie使用域.example.com是不必要的,除非这些Cookie需要被读取从不同的子域.

[在Firefox中测试,Chrome(第三方cookie被阻止)和Safari] [ ThirdPartyUtil.IsThirdPartyInternal似乎是在Firefox中检查的地方]

  • 这对于现代浏览器来说是正确的。我花了一段时间才弄清楚为什么我的 oauth 登录在开发模式下不起作用 (2认同)
  • 如果其他人对“基域”的构成感到困惑,则正确的术语是“eTLD”,第一方 Cookie 的定义是“eTLD+1”是否相同 - 例如,请参阅 https:// /web.dev/same-site-same-origin。具体来说,您不能仅通过计算点数来判断 2 个域是否位于同一个基域中;您必须在已发布的 eTLD 列表中查找它 (2认同)

PHP*_*uru 5

假设未在相关 cookie 上设置域属性,在这种情况下,由于主机名不同,它确实是第三方 cookie。然而,由于基本域相同,通常会阻止第三方 cookie 的浏览器不会阻止它。因此,在这方面,它不被视为第三方 cookie。

我知道这一点是因为当基本域相同而子域不同时,我能够成功设置和读取第三方 cookie,而第三方 cookie 在最新版本的 Firefox、Chrome 和 Microsoft Edge 的浏览器设置中被阻止。即使没有在 cookie 上设置域属性也是如此。这意味着 Firefox、Chrome 和 Microsoft Edge 不会将来自同一基本域的 cookie 视为第三方 cookie。

我的方法如下。我有两个不同的主机名,它们具有相同的基本域但具有不同的子域。其中之一包含两个 PHP 文件。第一个设置一个带有随机 cookie 名称且没有域属性的 cookie,并将 cookie 的名称作为 JSONP 返回。第二次尝试读取 cookie,然后以 JSONP 形式返回 true 或 false。另一个主机名包含一个 HTML 文件,该文件使用 AJAX 查询设置 cookie 的第一个 PHP 文件,然后在完成后立即再次使用 AJAX 查询测试 cookie 是否存在的第二个 PHP 文件。在继续之前,我首先确保浏览器阻止了第三方 cookie。我测试了三种浏览器:Firefox、Chrome 和 Microsoft Edge。

结论:如果某个资源设置了cookie,并且该资源上的基域与网站上的基域相同,但子域不同,则流行浏览器不会将其视为第三方cookie。

  • 这似乎也适用于新的 SameSite 标志。我测试了将 cookie 设置为“严格”,它仍然包含在对同一基域上的另一个子域的请求中。 (2认同)