如何使用 JavaScript 删除当前域的所有 cookie?
使用 JavaScript 清除所有 cookie
IT技术
javascript
cookies
                    2021-01-31 18:13:42
                
                    
                
            
        6个回答
            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";
    }
}
请注意,此代码有两个限制:
- 它不会删除
HttpOnly设置了HttpOnly标志的 cookie ,因为该标志会禁用 Javascript 对 cookie 的访问。 - 它不会删除已设置了
Path值的cookie 。(尽管这些 cookie 会出现在 中document.cookie,但如果不指定与设置相同的Path值,就无法删除它。) 
一个班轮
如果您想快速粘贴它...
document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
和书签的代码:
javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();
这是清除所有路径和域的所有变体(www.mydomain.com、mydomain.com 等)中的所有 cookie 的方法:
(function () {
    var cookies = document.cookie.split("; ");
    for (var c = 0; c < cookies.length; c++) {
        var d = window.location.hostname.split(".");
        while (d.length > 0) {
            var cookieBase = encodeURIComponent(cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
            var p = location.pathname.split('/');
            document.cookie = cookieBase + '/';
            while (p.length > 0) {
                document.cookie = cookieBase + p.join('/');
                p.pop();
            };
            d.shift();
        }
    }
})();
在我自己对此感到有点沮丧之后,我将这个函数组合在一起,它将尝试从所有路径中删除一个命名的 cookie。只需为您的每个 cookie 调用此方法,您应该比以前更接近删除每个 cookie。
function eraseCookieFromAllPaths(name) {
    // This function will attempt to remove a cookie from all paths.
    var pathBits = location.pathname.split('/');
    var pathCurrent = ' path=';
    // do a simple pathless delete first.
    document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
    for (var i = 0; i < pathBits.length; i++) {
        pathCurrent += ((pathCurrent.substr(-1) != '/') ? '/' : '') + pathBits[i];
        document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;' + pathCurrent + ';';
    }
}
一如既往,不同的浏览器有不同的行为,但这对我有用。享受。
如果您有权访问jquery.cookie插件,则可以通过以下方式清除所有 cookie:
for (var it in $.cookie()) $.removeCookie(it);