如何以通用方式禁用 cookie,直到用户接受 cookie

新手上路,请多包涵

有没有一种奇特的方法可以在用户接受之前禁用 cookie?

以下问题:我有一个使用大量 cookie 的网上商店,为了符合 GDPR,我们需要“禁用”cookie,直到用户接受它们。 我不想重写整个商店系统,因此我正在寻找一个通用的解决方案。

我的方法是:

  • 全部取消设置 set-cookie 我们服务器发送的标头(通过 nginx 或 php)

但是仍然存在一些问题:

  • 如何在不完全删除外部网站的情况下阻止外部网站设置 cookie(bing、google、fb、..)
  • 如何在不修改所有 javascript 源的情况下防止 javascript 设置 cookie(是否可以覆盖浏览器功能,因此您不能通过 JS 设置 cookie)

原文由 warch 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 571
2 个回答

如果您担心 GDPR 合规性,仅删除 cookie 是不够的。您需要禁用任何收集个人身份信息 (PII) 的跟踪脚本。

我建议将所有跟踪脚本移至 Google Tag Manger,并使用 Simo Ahava 概述的方法。 指南 1指南 2 。他的方法不适用于跟踪非 Google 的标签,但使用自定义触发器您可以停止任何操作。

话虽如此,如果您只是想删除 cookie,那么应该这样做。

 function deleteCookies() {
    var theCookies = document.cookie.split(';');
    for (var i = 0 ; i < theCookies.length; i++) {
        document.cookie = theCookies[i].split('=')[0] + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    }
}

原文由 Josh Bradley 发布,翻译遵循 CC BY-SA 3.0 许可协议

要禁用 JS-Cookies,您可以使用:

 if(!document.__defineGetter__) {
Object.defineProperty(document, 'cookie', {
    get: function(){return ''},
    set: function(){return true},
});
} else {
    document.__defineGetter__("cookie", function() { return '';} );
    document.__defineSetter__("cookie", function() {} );
}

原文由 warch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题