假设我在 www.example.com 有一个网站,其中有一个IFRAME指向ASP.NET网站 myapp.othersite.com - 这会导致会话和我理解的第三方cookie。
如果我将嵌入式应用移动到 myapp.example.com ,会话Cookie是否会被视为第三方Cookie,因为它是一个不同的子域?
答案 0 :(得分:8)
如果您在域.example.com
然后来自 www.example.com 和 www.myapp.example.com 的Cookie将被视为相同。
没有cookie被视为第三方Cookie。
答案 1 :(得分:6)
如果Cookie来自不同的基本域(基本域为example.com
或example.co.uk
),则它们似乎被视为第三方,但如果它们来自同一基本域的不同子域,则不会被视为第三方。
myapp.example.com
嵌入myapp.example.com
, www.example.com
将能够设置 Cookie myapp.example.com
。
让.example.com
为域{{1}}设置Cookie是不必要的,除非这些Cookie需要从其他子域读取。
[在Firefox,Chrome(已阻止第三方Cookie)和Safari中测试] [ThirdPartyUtil.IsThirdPartyInternal似乎是在Firefox中检查的地方
答案 2 :(得分:0)
当基本域相同且子域不同而在最新版本的Firefox,Chrome和Microsoft Edge的浏览器设置中阻止了第三方cookie时,我能够成功设置和读取第三方cookie。即使未在cookie上设置任何域属性,也是如此。这意味着Firefox,Chrome和Microsoft Edge不会将来自同一基本域的cookie视为第三方cookie。
我的方法如下。我有两个具有相同基本域但具有不同子域的不同主机名。其中一个包含两个PHP文件。第一个设置一个具有随机Cookie名称且没有任何域属性的Cookie,并将该Cookie的名称返回为JSONP。第二次尝试读取cookie,然后将true或false作为JSONP返回。另一个主机名包含一个HTML文件,该文件使用AJAX查询设置cookie的第一个PHP文件,然后在完成后立即再次使用AJAX查询第二个测试cookie是否存在的PHP文件。首先,我先确定浏览器会阻止第三方Cookie,然后再继续操作。我测试了三种浏览器:Firefox,Chrome和Microsoft Edge。在所有情况下,只要基本域相同,即使cookie来自不同的域,结果都表明cookie已成功设置和读取。
结论:如果资源设置了cookie,并且资源的基本域与网站上的基本域相同,但是子域不同,则流行的浏览器不会将其视为第三方cookie。< / p>