it-swarm.com.de

Wie kann ich alle Cookies mit JavaScript löschen?

Ich habe Code geschrieben, um Cookies in JavaScript zu speichern. Jetzt muss ich die Cookies unabhängig von den von mir zugewiesenen Werten löschen.

Gibt es Skriptmodule zum Löschen aller Cookies, die von Javascript generiert wurden?

Mein Beispielcode:

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

Wie könnte ich sonst alle Cookies löschen?

Wird es Probleme geben, wenn ich den Code auf dem Webserver teste?

71
venkatachalam

Auf den ersten Blick sieht es in Ordnung aus - wenn Sie eraseCookie() für jedes Cookie aufrufen, das aus document.cookie Gelesen wird, werden alle Ihre Cookies gelöscht.

Versuchen Sie dies:

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
  eraseCookie(cookies[i].split("=")[0]);

All dies mit dem folgenden Vorbehalt:

  • JavaScript kann nicht Cookies entfernen, die das HttpOnly haben = Flag gesetzt.
59
Guss

Es gibt keine 100% ige Lösung zum Löschen von Browser-Cookies.

Das Problem ist, dass Cookies nicht nur anhand ihres Schlüssels "Name", sondern auch anhand ihrer "Domain" und ihres "Pfades" eindeutig identifiziert werden.

Ohne die "Domäne" und den "Pfad" eines Cookies zu kennen, können Sie es nicht zuverlässig löschen. Diese Informationen sind in JavaScript nicht verfügbar. document.cookie. Es ist auch nicht über den HTTP-Cookie-Header verfügbar!

Wenn Sie jedoch den Namen, den Pfad und die Domäne eines Cookies kennen, können Sie diesen löschen, indem Sie ein leeres Cookie mit einem Ablaufdatum in der Vergangenheit festlegen. Beispiel:

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};
75
jb.

Einzeiler

Für den Fall, dass Sie es schnell einfügen möchten ...

document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });

Und der Code für ein Bookmarklet:

javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();
26
Craig Smedley

Diese Funktion wird in unserer Anwendung verwendet und funktioniert einwandfrei.

cookie löschen: Keine Argumentmethode

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
}

Bearbeiten: Dies löscht das Cookie, indem es auf das gestrige Datum gesetzt wird.

10
antnewbee

Warum verwenden Sie neues Datum anstelle einer statischen UTC-Zeichenfolge?

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