如何使用JavaScript删除当前域的所有cookie ?


当前回答

这个答案受到第二个答案和W3Schools的影响

document.cookie.split(';').forEach(function(c) {
  document.cookie = c.trim().split('=')[0] + '=;' + 'expires=Thu, 01 Jan 1970 00:00:00 UTC;';
});

似乎有效果

编辑:哇,几乎和扎克的Stack Overflow把它们放在一起的有趣方式一模一样。

编辑:NVM显然是暂时的

其他回答

简单。得更快。

function deleteAllCookies() {
 var c = document.cookie.split("; ");
 for (i in c) 
  document.cookie =/^[^=]+/.exec(c[i])[0]+"=;expires=Thu, 01 Jan 1970 00:00:00 GMT";    
}

这个答案受到第二个答案和W3Schools的影响

document.cookie.split(';').forEach(function(c) {
  document.cookie = c.trim().split('=')[0] + '=;' + 'expires=Thu, 01 Jan 1970 00:00:00 UTC;';
});

似乎有效果

编辑:哇,几乎和扎克的Stack Overflow把它们放在一起的有趣方式一模一样。

编辑:NVM显然是暂时的

据我所知,没有办法对域名上的任何cookie集进行全面删除。如果知道cookie的名称,并且脚本与cookie在同一个域中,则可以清除cookie。

你可以将值设置为空,过期日期设置为过去的某个时间:

var mydate = new Date();
mydate.setTime(mydate.getTime() - 1);
document.cookie = "username=; expires=" + mydate.toGMTString(); 

这里有一篇关于使用javascript操作cookie的优秀文章。

//Delete all cookies
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:01 GMT;' +
            'path=' + '/;' +
            'domain=' + window.location.host + ';' +
            'secure=;';
    }
}

这对我来说很管用:

function deleteCookie(name) {
  document.cookie = 
    `${name}=; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/`;

    // Remove it from local storage too
    window.localStorage.removeItem(name);
}

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

  cookies.forEach((cookie) => {
    const name = cookie.split("=").shift();
    this.deleteCookie(name);
  });

  // Some sites backup cookies in `localStorage`
  window.localStorage.clear();
}