[javascript] JavaScript로 모든 쿠키 지우기

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";
}