【问题标题】:Does disabling third party cookies also disable cookies created by third party javascript?禁用第三方 cookie 是否也会禁用第三方 javascript 创建的 cookie?
【发布时间】:2011-02-03 14:39:25
【问题描述】:

当页面包含第三方 javascript(通过 <script src=...)并且该 javascript 设置了一个 cookie 时,该 cookie “成为”第一方 cookie,即使它最初是由第三方来源设置的。

我的问题是这样的。如果有人在他们的浏览器中禁用了第三方 cookie,这是否也会应用第三方 javascript 设置的 cookie?还是它只阻止在请求头中明确设置的第三方域请求的 cookie?

无论哪种方式,所有浏览器是否都以完全相同的方式处理此问题,或者某些浏览器会阻止 javascript cookie 但其他浏览器允许?

【问题讨论】:

    标签: javascript cookies


    【解决方案1】:

    我相信大多数浏览器在通过用户首选项启用/禁用它们时,不会区分 HTTP 标头中设置的域 cookie 与 javascript 设置的 cookie。当然也有例外——没有技术原因阻止某人扩展浏览器,使其根据 cookie 的确切来源对 cookie 有不同的规则——但我不知道有什么。

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

    【讨论】:

    • 我对 Firefox 的有限测试表明,即使关闭了该功能,由第三方 javascript 创建的 cookie 仍然可以工作......但测试所有浏览器有点痛苦,所以我想我会问如果有人想知道类似的想法并对其进行更彻底的测试。
    • 不,您最初的理解是正确的 - 我试图弄清楚通过 http 标头的 cookie 的处理方式是否与通过 javascript 设置的不同,即使它们来自“来自”同一个第三方域。
    【解决方案2】:

    我只是想在进一步测试后更新它,以防以后有人遇到它。

    我测试了 Firefox 3.6、MSIE 7、Safari 4、Chrome 4 和 Opera 10,它们实际上都支持通过第三方 javascript 创建 cookie,即使第三方 cookie 被禁用。我认为这是因为 cookie 是为第一方域创建的,因此浏览器将它们视为第一方 cookie,即使它们是由第三方来源的脚本创建的。

    启用此功能时,只有第三方请求的标头创建的 cookie 才会被拒绝。

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 2021-01-10
      • 2014-04-20
      • 2011-03-22
      • 2021-02-08
      • 2019-01-04
      • 2015-06-11
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多