2009-07-06 8 views
44

Wie dynamisch, über Javascript, ein Session-Cookie löschen, ohne den Browser manuell neu zu starten?Wie Session Cookie löschen?

Ich habe irgendwo gelesen, dass Sitzungscookie im Browser-Speicher beibehalten und wird entfernt, wenn der Browser geschlossen wird.

Danke.

Mehr Info: Der Code-Snippet oben ist ein Javascriptcode-Schnipsel, mit jQuery und seiner jQuery.cookie Plugin.

Antwort

56

Ein Sitzungscookie ist nur ein normaler Cookie ohne Ablaufdatum. Diese werden vom Browser als gültig angesehen, bis das Fenster geschlossen oder das Programm beendet wird.

Wenn der Cookie jedoch ein httpOnly Cookie ist (ein Cookie mit der httpOnly parameter Gruppe), können Sie ihn nicht von außerhalb des HTTP lesen, ändern oder löschen.

+3

Ich muß sagen, dass ich von Kopf gegen den Monitor etwa eine Stunde mit Frage pochte _ „Warum ich nicht in der Lage bin zu Session-Cookie aus dem Javascript löschen?“ _, Bis ich nicht haben fand die kurze Antwort: es war 'httpOnly' ... Danke, sehr nützlich. – BlitZ

+1

FYI: mit _the HTTP_ in @ Gumbo letzten Satz meint er eigentlich _Server_Seite_. – ThomasDC

6

Es gibt bekannte Probleme mit IE und Opera nicht Session-Cookies zu entfernen, wenn das Datum der Vergangenheit verfällt Einstellung (das ist, was die Cookie-Plugin jQuery ist der Fall ist)

Dies funktioniert in Safari und Mozilla/FireFox.

-3

Löschen eines jQuery cookie:

$(function() { 
    var COOKIE_NAME = 'test_cookie'; 
    var options = { path: '/', expires: 10 }; 
    $.cookie(COOKIE_NAME, 'test', options); // sets the cookie 
    console.log($.cookie(COOKIE_NAME)); // check the value // returns test 
    $.cookie(COOKIE_NAME, null, options); // deletes the cookie 
    console.log($.cookie(COOKIE_NAME)); // check the value // returns null 
}); 
0

Dies muss auf der Serverseite durchgeführt werden, wo das Cookie ausgestellt wurde.

+0

warum denkst du das? – ysth

+0

Wie machst du das? Speziell in Node, wenn du kannst! Vielen Dank. –

32

Achten Sie darauf, den genauen gleichen Weg wie beim Festlegen es, das heißt

Rahmen liefern:

$.cookie('foo','bar', {path: '/'}); 

ausbauen:

$.cookie('foo', null, {path: '/'}); 

Beachten Sie, dass

$.cookie('foo', null); 

wird nicht funktionieren, da ich Es ist eigentlich nicht der gleiche Cookie.

Hoffe, dass hilft. Das gleiche gilt für die anderen Optionen im Hash

+3

Danke für die Klärung.Ich wünschte, ich könnte es ein paar Mal abstimmen. –

+1

Dieser Beitrag hat mir Kopfschmerzen erspart. Vielen Dank! – lfender6445

Verwandte Themen