it-swarm.com.de

Cookie nach Namen löschen?

Wie kann ich ein bestimmtes Cookie mit dem Namen roundcube_sessauth löschen?

Sollte nicht das Folgende sein:

function del_cookie(name) {
    document.cookie = 'roundcube_sessauth' + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

Und dann:

<a href="javascript:del_cookie(name);">KILL</a>

Töte den roundcube_sessauth-Cookie?

117
Charlie

Um ein Cookie zu löschen, setzen Sie das Datum expires auf etwas in der Vergangenheit. Eine Funktion, die dies tut, wäre.

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

Dann löschen Sie einfach einen Cookie mit dem Namen roundcube_sessauth.

delete_cookie('roundcube_sessauth');
159
user672118

Sie sollten den Pfad angeben, auf dem sich das Cookie befindet, um sicherzustellen, dass Sie das echte Cookie löschen

function set_cookie(name, value) {
  document.cookie = name +'='+ value +'; Path=/;';
}
function delete_cookie(name) {
  document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

Wenn Sie keinen Pfad angeben, setzt der Browser ein Cookie relativ zu der Seite, auf der Sie sich gerade befinden. Wenn Sie das Cookie löschen, während es sich auf einer anderen Seite befindet, wird das Cookie von anderen Cookies verwendet.

Bearbeiten basierend auf @Evan Morrisons Kommentar.
Beachten Sie, dass in einigen Fällen auch der Domain-Parameter erforderlich ist, um das richtige Cookie zu identifizieren.
.__ Wird normalerweise als Domain=.yourdomain.com verwendet.
Punkt vor dem Domänennamen bedeutet, dass dieses Cookie in einer beliebigen Unterdomäne vorhanden sein kann (www zählt auch als Unterdomäne). 

Wie in der Antwort von @ RobertT erwähnt, können HttpOnly-Cookies auf Client-Seite nicht mit JavaScript gelöscht werden.

192
emii

// Wenn exMins = 0 übergeben wird, wird es gelöscht, sobald es erstellt wird.

function setCookie(cname, cvalue, exMins) {
    var d = new Date();
    d.setTime(d.getTime() + (exMins*60*1000));
    var expires = "expires="+d.toUTCString();  
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

setCookie('cookieNameToDelete','',0) // this will delete the cookie.
7
Kishor Patil

Ich bin mir nicht wirklich sicher, ob dies in der Roundcube-Version vom Mai '12 der Fall war. Für die aktuelle Version lautet die Antwort, dass Sie roundcube_sessauth-Cookie nicht aus JavaScript löschen können, da es als HttpOnly markiert ist. Dies bedeutet, dass auf den Code von JS-Clientseite nicht zugegriffen werden kann und er nur durch serverseitige Skripts oder durch direkte Benutzeraktion (über einige Browser-Mechaniken wie den integrierten Debugger oder ein Plug-In) entfernt werden kann.

6
RobertT

Sie können diese Lösung ausprobieren

var d = new Date();
d.setTime(d.getTime() + (0*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;
0
Nafees