我怎样才能删除JavaScript的所有cookie?
我写了代码来保存JavaScript中的Cookie。 现在我需要清除cookie而不pipe我分配的值。
有没有脚本模块来删除所有由Javascript生成的cookie?
我的示例代码:
document.cookie = 'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/' function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { createCookie(name,"",-1); }
我还能怎样清除所有的cookies?
当我testingnetworking服务器上的代码时会有什么问题吗?
但从表面上看,它看起来没问题 – 如果你在你从document.cookie
读取的每个cookie上调用你的eraseCookie(),那么所有的cookies都将不见了。
也许这样的事情:
var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) eraseCookie(cookies[i].split("=")[0]);
所有这些与警告:
- JavaScript无法删除设置了HttpOnly标志的Cookie。
没有100%的解决scheme来删除浏览器cookies。
问题在于,Cookie不仅被他们的关键“名称”所识别,而且被他们的“域名”和“path”所识别。
在不知道cookie的“域”和“path”的情况下,不能可靠地将其删除。 这些信息不能通过JavaScript的document.cookie
。 它也不能通过HTTP Cookie标头获得!
但是,如果您知道cookie的名称,path和域名,则可以通过设置过期空的cookie来清除它,例如:
function clearCookie(name, domain, path){ var domain = domain || document.domain; var path = path || "/"; document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path; };
一个class轮
如果你想快速粘贴…
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=/"); }); })();
这是我们在应用程序中使用的一个函数,它工作正常。
删除cookie:无参数方法
function clearListCookies() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var spcook = cookies[i].split("="); deleteCookie(spcook[0]); } function deleteCookie(cookiename) { var d = new Date(); d.setDate(d.getDate() - 1); var expires = ";expires="+d; var name=cookiename; //alert(name); var value=""; document.cookie = name + "=" + value + expires + "; path=/acc/html"; } window.location = ""; // TO REFRESH THE PAGE }
编辑:这将通过将其设置为昨天的date来删除cookie。
为什么你使用新的date,而不是一个静态的UTCstring?
function clearListCookies(){ var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++){ var spcook = cookies[i].split("="); document.cookie = spcook[0] + "=;expires=Thu, 21 Sep 1979 00:00:01 UTC;"; } }