是否可以代表用户在我的网站上禁用第三方 cookie?

Bri*_*Rak 5 cookies webserver

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

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

我想知道是否有某种标题或其他指令可以从我的网站提供,它们对我的用户具有相同的效果,就像他们禁用了第三方 cookie 一样,但不需要他们去和猴子围绕他们的设置。

Hur*_*ful 6

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

  • 使用Fetch API fetch忽略Set-Cookie响应,Cookie除非指定,否则不包含。

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

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

但这些都是通过使用跨源资源共享 (CORS)来实现的,如果资源服务器配置为禁止没有凭据(cookie 和其他标头)的请求,则它们将无法工作。您可能会收到 404 或其他错误。

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

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