2010-04-02 76 views
4

当一个页面包含第三方javascript(通过<script src=...)并且该javascript设置了一个cookie时,该cookie“变成”第一方cookie,尽管它最初由第三方源设置。禁用第三方cookie是否也禁用由第三方javascript创建的cookie?

我的问题是这样的。如果有人在浏览器中禁用了第三方cookie,那么这是否也适用于由第三方javascript设置的Cookie?或者它是否只阻止在向第三方域的请求的头文件中明确设置的cookie?

无论哪种方式,所有的浏览器都以完全相同的方式处理这个问题,或者做一些块JavaScript的cookie,但其他人允许它?

回答

5

我只是觉得我会在进一步测试后更新这个,以防以后任何人遇到它。

我测试过Firefox 3.6,MSIE 7,Safari 4,Chrome 4和Opera 10,他们都支持通过第三方javascript创建cookie,即使第三方cookie被禁用也是如此。我得出这样的结论是因为cookie是为第一方域创建的,因此浏览器将它们视为第一方cookie,即使它们是由第三方源脚本创建的。

这只是由第三方请求头创建的cookie在启用此功能时会被拒绝。

0

我相信大多数浏览器都不会区分HTTP标头中设置的域的cookie与javascript设置的域,而是通过用户偏好来启用/禁用它们。当然可以是例外 - 没有任何技术上的原因阻止某人扩展浏览器,使其根据Cookie产生的确切位置对cookies有不同的规则 - 但我不知道任何。

编辑:我想我最初误解了你的问题 - 我以为你问了通过HTTP标头和cookie设置通过JavaScript设置Cookie之间的区别。相反,您问的是,由不同域托管的JavaScript设置的cookie是否被认为是第三方cookie,而不是由JavaScript在页面中直接内联或托管在相同域中设置的cookie?如果是这种情况,我相信答案是否定的(也就是说,它们被视为第一方cookie)。无论js文件托管的原始域如何,它都会在包含它的网页上下文中执行,因此它被视为第一方。

+0

我使用Firefox进行的有限测试显示,即使关闭了该功能,由第三方javascript创建的cookie仍然可以正常工作......但测试所有浏览器有点痛苦,所以我想我会问有没有人想知道类似思想和更彻底的测试。 – Sean 2010-04-02 02:52:08

+0

不,你原来的理解是正确的 - 我试图弄清楚通过http标头的cookie是否与通过javascript设置的不同,即使它们来自“相同的第三方域”。 – Sean 2010-04-02 05:54:19