如何使用 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);