- 相关问题,但没有回答我的问题:在 Firefox 中按名称而不是按网站阻止 Cookie- 这对 Google Analytics 来说太具体了
我最近开始在 StackOverflow 上变得相当活跃,所以我打开了相当多的链接http://jsfiddle.net,但由于我需要定期调整面板大小才能看到以预期方式发布的特定代码,因此我通常会得到一些非常奇怪的面板配置。因为我不想每次都调整窗口大小以使其更正常,所以我想阻止window_sizes
来自 jsfiddle 的 cookie,但当我尝试在 Google 上搜索如何阻止来自特定网站的单个 cookie 时,我什么也没找到。
我也尝试检查 Chrome 和 Firefox 的设置,但都没有阻止特定 cookie 的选项,只能阻止某些域。
我主要想知道如何在 Chrome(我的默认浏览器)中阻止这个特定的 cookie,但我认为如果可能的话,将其他浏览器的方法也包括在内对于遇到同样问题的人来说也可能会有用。
答案1
成就解锁-选择性清除 cookie
默认情况下,浏览器不允许对 Cookie 进行如此细粒度的控制:通常您可以阻止所有第三方 Cookie 或阻止给定域的所有 Cookie。阻止所有内容不是一种选择,因为您很容易最终破坏基本功能(例如用户登录)。在这种情况下,您必须求助于用户脚本或扩展。
Firefox - 用户脚本解决方案
这是我想出的代码。已使用 Firefox 26.0、Greasemonkey 1.14 测试。
// ==UserScript==
// @name JSFiddlePanelReset
// @namespace net.jsfiddle.userscripts
// @description Resets panels back to their default size whenever the site is loaded.
// @version 1.0
// @icon http://jsfiddle.net/favicon.png
// @grant none
// @include http://jsfiddle.net/*
// @match http://jsfiddle.net/*
// ==/UserScript==
(function (){
// set the domain
var domain = ".jsfiddle.net";
// get a date in the past
var expireDate = new Date(-1).toUTCString();
// clear the size-related cookie and force it to expire
document.cookie = "window_sizes=; domain=" + domain + "; path=/; expires=" + expireDate;
})();
评论
正如@Brock Adams 指出的那样另一个问题,Greasemonkey 可以删除的内容有很大的限制:
- 您要删除的 cookie 位于当前页面的域中。
- 他们不是“安全 Cookie”。
- Cookie 路径(Greasemonkey 无法检测到)是默认路径
/
。- 页面加载后,javascript 不会设置任何 cookie。
- 追踪您的其实是“cookie”。许多网站使用各种其他技术,包括 LSO、本地存储等。
参考
基于 Chromium 的浏览器 - 扩展
虽然上述用户脚本确实清除了指定的 cookie,但 JSFiddle 面板无论出于何种原因都不会重置。由于这不是我使用的浏览器类型,所以我没有花太多时间去了解原因;也许其他人可以对此有所解释。作为替代方案,您可以使用编辑此Cookie扩大。
编辑此Cookie
除此之外,此特定扩展还可以阻止特定的 cookie。您可以按域、名称和值过滤它们。