当前位置:  开发笔记 > 编程语言 > 正文

如何用JavaScript删除所有cookie?

如何解决《如何用JavaScript删除所有cookie?》经验,为你挑选了4个好方法。

我编写了用JavaScript保存cookie的代码.现在我需要清除cookie,而不管我指定的值.

是否有任何脚本模块可以删除Javascript生成的所有Cookie ?

我的示例代码:

document.cookie = 'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

我怎么能清除所有的饼干?

当我在网络服务器上测试代码时会不会有任何问题?



1> jb...:

删除浏览器cookie没有100%的解决方案.

问题在于,cookie不仅仅通过其关键"名称"而且还通过其"域"和"路径"进行唯一标识.

在不知道cookie的"域"和"路径"的情况下,您无法可靠地删除它.此信息无法通过JavaScript获得document.cookie.它也不能通过HTTP Cookie标头获得!

但是,如果您知道cookie的名称,路径和域,则可以通过设置过去有过期日期的空cookie来清除它,例如:

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};


@Andbdrew这不是一个错字.在JavaScript中的任何变量前面附加一个"+"将其转换为数字.没有它你将得到字符串格式的日期,因为`+`运算符在这里用作字符串连接运算符,而你真正想要的是Unix时间戳

2> Guss..:

从表面上看,它看起来没问题 - 如果你打电话eraseCookie()给每个读取的cookie document.cookie,那么你的所有cookie都将消失.

试试这个:

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
  eraseCookie(cookies[i].split("=")[0]);

所有这些都有以下警告:

JavaScript 无法删除已设置HttpOnly标志的Cookie .


这是"HttpOnly"旗帜正在吸引你.您可以从javascript中删除服务器cookie,除非它们受到HttpOnly标志的保护
"你只能删除由JavaScript创建的cookie - 如果cookie是由服务器创建的,那么你就无法通过JavaScript删除它." 实际上,您应该能够删除您可以看到的任何cookie.

3> Craig Smedle..:

一个班轮

如果你想快速粘贴它...

document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });

以及bookmarklet的代码:

javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();



4> antnewbee..:

这是我们在我们的应用程序中使用的功能,它工作正常.

删除cookie:没有参数方法

function clearListCookies()
{   
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++)
    {   
        var spcook =  cookies[i].split("=");
        deleteCookie(spcook[0]);
    }
    function deleteCookie(cookiename)
    {
        var d = new Date();
        d.setDate(d.getDate() - 1);
        var expires = ";expires="+d;
        var name=cookiename;
        //alert(name);
        var value="";
        document.cookie = name + "=" + value + expires + "; path=/acc/html";                    
    }
    window.location = ""; // TO REFRESH THE PAGE
}

编辑:这将通过将cookie设置为昨天的日期来删除cookie.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有