【问题标题】:Is it possible to disable third-party cookies while on my site on behalf of users?是否可以代表用户在我的网站上禁用第三方 cookie?
【发布时间】:2018-07-16 23:10:01
【问题描述】:

我有一个从另一个网站加载资源的网站。我已经能够确定:

  • 第三方网站在用户浏览器上放置cookies。
  • 如果我在浏览器设置中禁用第三方 cookie,第三方网站将无法再在浏览器中放置 cookie。
  • 资源仍然可以正常工作。

我想知道我是否可以从我的网站提供某种标题或其他指令,它们对我的用户产生的效果与他们禁用第三方 cookie 的效果相同,但不需要他们这样做去看看他们的设置。

【问题讨论】:

  • 你找到答案了吗。如果是这样,您可以添加您的见解吗?
  • @StormBr34ker 不,我没有。相反,我在我的网站的隐私政策中包含了禁用第三方 cookie 的说明。绝对是一个蹩脚的解决方法,但总比没有好。
  • 哦,好吧@Brian Rak。谢谢 。我使用谷歌标签管理器来阻止大部分 cookie。虽然 - 我找不到明确的(单次)方法来阻止由框架或插件等设置的方法。
  • 这有帮助吗:How to block third-party cookies?这实际上取决于您如何访问此第三方站点/源。你能提供更多细节吗?例如您正在使用什么语言/框架,可能是您如何访问此站点/源代码的代码 sn-p
  • 感谢您的链接!据我所知,它看起来像是一个脚本,它基本上可以防止在您使用data-cookiescript 属性装饰的页面上加载其他脚本,除非用户选择接受 cookie。我正在寻找的东西有点不同。我仍然想从第三方网站加载和运行脚本。我只是想阻止该脚本在客户端上创建 cookie。基本上与用户在其偏好中禁用第三方 cookie 的行为完全相同。

标签: cookies webserver


【解决方案1】:

一般来说,阻止您的浏览器在您的 HTTP 请求中包含 cookie 是不可能的。然而,最近,很少有新的方法来获取资源被添加到浏览器中。

  • 使用Fetch API fetch 会在响应中忽略Set-Cookie,并且除非指定,否则不包括Cookie

  • 使用 ES6 (ES2015) 模块: 没有crossorigin 属性的<script type="module" ...> 将不会发送Cookie。它不适用于非模块脚本,并且服务器(不是您的,服务文件的服务器)必须配置为使用有效的 CORS 标头提供文件。使用import * from blah.com/script.js 导入的脚本也将以相同的方式运行。关注link了解更多信息。

  • 设置crossorigin="anonymous" scriptimgstyle 等资源元素与crossorigin="anonymous" 将不会在后续请求中包含Cookie 标头。

但是这些都通过使用Cross-Origin Resource Sharing (CORS) 工作,如果资源服务器被配置为禁止没有凭据(cookie 和其他标头)的请求,它们将无法工作。相反,您可能会收到 404 或其他错误。

如果您担心第三方 cookie,通常最好从您自己的服务器或像大多数 CDN 一样的无 cookie 服务器提供静态数据。

Firefox 和 Safari 等浏览器默认禁用第三方 cookie,而 Chrome 是截至 2020 年 1 月仍默认允许第三方 cookie 的最后一个现代浏览器。但即使 Chrome 也正在逐步淘汰第三方 cookie。

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多