JavaScript를 사용하여 현재 도메인의 모든 쿠키를 어떻게 삭제합니까?
답변
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
가 쿠키에 대한 Javascript의 액세스를 비활성화 하므로 플래그가 설정된 쿠키는 삭제되지 않습니다 .Path
값 으로 설정된 쿠키는 삭제하지 않습니다 . (이 쿠키는에 표시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 등)의 모든 쿠키를 지우는 방법입니다.
(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();
}
}
})();
답변
이 문제에 약간의 좌절감을 느낀 후에 나는 모든 경로에서 명명 된 쿠키를 삭제하려고 시도하는이 기능을 함께 사용했습니다. 각 쿠키마다 이것을 호출하면 이전의 모든 쿠키를 삭제하는 데 더 가깝습니다.
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 플러그인에 액세스 할 수있는 경우 다음 방법으로 모든 쿠키를 지울 수 있습니다.
for (var it in $.cookie()) $.removeCookie(it);
답변
내가 아는 한 도메인에 설정된 쿠키를 담요로 삭제할 수있는 방법이 없습니다. 이름을 알고 스크립트가 쿠키와 동일한 도메인에있는 경우 쿠키를 지울 수 있습니다.
값을 비우고 만료 날짜를 과거 어딘가에 설정할 수 있습니다.
var mydate = new Date();
mydate.setTime(mydate.getTime() - 1);
document.cookie = "username=; expires=" + mydate.toGMTString();
여기 에 자바 스크립트를 사용하여 쿠키를 조작 하는 것에 대한 훌륭한 기사가 있습니다 .
답변
더 간단합니다. 더 빠릅니다.
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";
}