无法从javascript中删除cookie

无法从javascript中删除cookie,javascript,cookies,Javascript,Cookies,我在一个外部站点上,我正试图通过javascript删除cookie 我在控制台中执行了以下操作: function deleteAllCookies() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var eqPos = cookie.indexOf("=");

我在一个外部站点上,我正试图通过javascript删除cookie

我在控制台中执行了以下操作:

function deleteAllCookies() {
    var cookies = document.cookie.split(";");

    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        var eqPos = cookie.indexOf("=");
        var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
}

deleteAllCookies()
这些饼干似乎没有碰过。你知道为什么吗

注:以上代码来自stackoverflow
我也有同样的问题。我发现cookie被设置在一个空的子域下,例如cookie域是“.domain.com”,我的网站托管在“sub.domain.com”

为了修复此问题,我将cookie域添加到设置值中

document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.domain.com";

要查看cookie设置为哪个域,请在Chrome中打开开发工具->资源->cookie并查看域字段。

您的cookie很可能没有被删除,因为当您设置新值时,它必须与您尝试删除的原始cookie的路径和域相匹配

换言之:

 document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=[something];"
“something”值需要与现有cookie设置的值一致

JS调试器可能不会向您提供路径和域的详细信息,但如果您在Firefox/Safari/IE中的Chrome->settings或类似面板中查找现有cookie的值,就会发现哪些路径和域不匹配


让我知道这是否有帮助。

我正在使用浏览器书签从当前域中删除cookie,我也有同样的问题,我的问题是我也没有使用域。以下是我的bookmarklet值:

javascript: (function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=." + location.host.split('.').slice(-2).join(".") +";path=/"); }); })();
请注意,我将“domain.com”替换为location.host.split('.').slice(-2).join(“.”),这样我总是可以得到没有子域名的域名,即mail.google.com将变成google.com。在设置cookie到期时,我们应该忽略subdemain(至少在我的情况下是这样的。

可能是上面的链接可以给予帮助

只需像下面那样运行JavaScript

document.execCommand("ClearAuthenticationCache")

我尝试了,但cookie被清除。

我在尝试删除某些cookie时遇到类似问题。有时这会起作用:

document.cookie=name+'=;expires=Thu,1970年1月1日00:00:01 GMT;path=/;;;

…但有时却没有

在查看Chrome Inspector(应用程序选项卡->存储侧栏->Cookies)后,我注意到一些Cookies设置了不同的域。例如:

.mydoamin.com
sub.mydomain.com 
因此,我的解决方案是创建一个通用函数,从所有域中删除cookie

var deleteCookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=.mydomain.com;';
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=sub.mydomain.com;';
};


对我来说,问题是我设置了
字段,只有在设置cookie时您对该字段进行了重写,该字段才是必需的

document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"

你只能删除你正在删除的域上的cookie。你不能删除跨域cookie。发布你的cookie数据。这对我很有用:谢谢各位!我正在控制台执行此代码,我在wsj上。我在online.wsj.com上,我想cookie在域wsj.com中。我在IE和Edge中发现了这个问题。最好始终设置指向某个对象的路径,因为默认值将是设置cookie的页面。因此,如果您尝试在其他页面上使其过期,则路径将不匹配,也不会过期。在IE和Edge中,它似乎从document.cookie值中隐藏过期和路径,因此无法通过查看e值。如果需要,请将设置页的路径保存在cookie值中,以便以后可以将其拉出。或者始终附加“path=/;”设置为cookie值。然后它将从任何页面过期。此解决方案适用于我们的实例。我们的cookie不会仅使用
过期
路径
参数进行清除,但一旦添加了
参数,它就解决了问题。
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"