Rob*_*ker 280
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";
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,此代码有两个限制:
HttpOnly标志集的cookie ,因为该HttpOnly标志禁用了Javascript对cookie的访问.Path值设置的cookie .(尽管这些cookie会出现在这里document.cookie,但是如果没有指定Path与其设置相同的值,则无法删除它.)Cra*_*ley 114
如果你想快速粘贴它...
document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
Run Code Online (Sandbox Code Playgroud)
以及bookmarklet的代码:
javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();
Run Code Online (Sandbox Code Playgroud)
Ant*_*yVO 64
在我自己有点沮丧之后,我将这个函数组合在一起,它将尝试从所有路径中删除一个命名的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 + ';';
}
}
Run Code Online (Sandbox Code Playgroud)
一如往常不同的浏览器有不同的行为,但这对我有用.请享用.
Jan*_*Jan 60
这里有一个清除所有路径和域的所有变体(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();
}
}
})();
Run Code Online (Sandbox Code Playgroud)
Sla*_*ser 16
以下代码将删除当前域和所有尾随子域(www.some.sub.domain.example、.some.sub.domain.example等.sub.domain.example)内的所有 cookie。
一个单行普通 JS 版本(我认为这里唯一一个不使用cookie.split()):
document.cookie.replace(/(?<=^|;).+?(?=\=|;|$)/g, name => location.hostname.split('.').reverse().reduce(domain => (domain=domain.replace(/^\.?[^.]+/, ''),document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`,domain), location.hostname));
Run Code Online (Sandbox Code Playgroud)
这是这一行的可读版本:
document.cookie.replace(
/(?<=^|;).+?(?=\=|;|$)/g,
name => location.hostname
.split(/\.(?=[^\.]+\.)/)
.reduceRight((acc, val, i, arr) => i ? arr[i]='.'+val+acc : (arr[i]='', arr), '')
.map(domain => document.cookie=`${name}=;max-age=0;path=/;domain=${domain}`)
);
Run Code Online (Sandbox Code Playgroud)
jic*_*chi 14
如果您有权访问jquery.cookie插件,则可以通过以下方式删除所有cookie:
for (var it in $.cookie()) $.removeCookie(it);
Run Code Online (Sandbox Code Playgroud)
小智 13
如果您担心仅清除安全源上的 cookie,您可以使用Cookie Store API及其.delete()方法。
cookieStore.getAll().then(cookies => cookies.forEach(cookie => {
console.log('Cookie deleted:', cookie);
cookieStore.delete(cookie.name);
}));
Run Code Online (Sandbox Code Playgroud)
访问caniuse.com表中的Cookie Store API以检查浏览器支持情况。
Con*_*oyP 11
据我所知,没有办法彻底删除域上的任何cookie集.如果您知道名称并且脚本与cookie位于同一域中,则可以清除cookie.
您可以将值设置为空,将过期日期设置为过去的某个位置:
var mydate = new Date();
mydate.setTime(mydate.getTime() - 1);
document.cookie = "username=; expires=" + mydate.toGMTString();
Run Code Online (Sandbox Code Playgroud)
这里有一篇关于使用javascript操纵cookie 的优秀文章.
简单.快点.
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";
}
Run Code Online (Sandbox Code Playgroud)
答案受到第二个答案和W3Schools的影响
document.cookie.split(';').forEach(function(c) {
document.cookie = c.trim().split('=')[0] + '=;' + 'expires=Thu, 01 Jan 1970 00:00:00 UTC;';
});
Run Code Online (Sandbox Code Playgroud)
似乎工作
编辑:哇几乎和Zach一样有趣,Stack Overflow如何将它们放在一起.
编辑:显然是临时的nvm
小智 5
document.cookie.split(";").forEach(function(c) {
document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/");
});
//clearing local storage
localStorage.clear();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
375306 次 |
| 最近记录: |