如何使用 JS 清除所有 Cookies
实现说明:
只要将一个 cookie 的过期时间设置为一个早于现在的时间,那么这个 cookie 就会被清除掉, 清除所有的 cookie 就是将所有 cookie 的过期时间都设置为早于现在的时间, 本案例还根据当前路径,清除更多除了 "/"
路径以外其他可访问的 path
的 cookie
实现代码:
/**
* 删除所有cookie
*/
function deleteAllCookies() {
//cookie 是一个由分号分隔的字符串,将它分割成数组
let cookies = document.cookie.split(";");
//一个早于现在的时间
let expires = "Thu, 01 Jan 1970 00:00:00 GMT";
//当前路径
var pathBits = location.pathname.split('/');
//遍历所有可访问 cookies
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i];
let eqPos = cookie.indexOf("=");
let name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
let path = '';
//遍历当前路径
for (var j = 0; j < pathBits.length; j++) {
path += ((path.substr(-1) != '/') ? '/' : '') + pathBits[j];
//执行清除
document.cookie = `${name}=; expires=${expires}; path=${path}`;
}
}
}
deleteAllCookies(); //调用
如果 cookie 有 HttpOnly
属性,则无法进行删除,因为 HttpOnly
会禁止 JavaScript 访问这个 cookie。
更简短的实现
document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
这是一个更简短的的实现,一行代码就搞定,但它只清除 path
为 "/"
的 cookie
版权声明:[自由转载-注明出处-非商用-非衍生] (知识共享许可协议)