2009-07-06 3 views
44

Come dinamicamente, tramite javascript, eliminare un cookie di sessione, senza riavviare manualmente il browser?Come eliminare il cookie di sessione?

Ho letto da qualche parte che il cookie di sessione viene conservato nella memoria del browser e verrà rimosso quando il browser viene chiuso.

// sessionFooCookie is session cookie 
// this code does not delete the cookie while the browser is still on 
jQuery.cookie('sessionFooCookie', null); 

Grazie.

Ulteriori informazioni: Il frammento di codice di cui sopra è un codice javascript frammento, utilizzando jQuery e il suo plugin jQuery.cookie.

risposta

56

Un cookie di sessione è solo un normale cookie senza una data di scadenza. Quelli sono gestiti dal browser per essere validi fino a quando la finestra non viene chiusa o il programma viene chiuso.

Ma se il cookie è un cookie httpOnly (un cookie con il set httpOnly parameter), non è possibile leggerlo, modificarlo o eliminarlo dall'esterno del HTTP.

+3

devo dire, che mi batteva dalla testa contro il monitor circa un'ora con la domanda _ "Perché io non sono in grado di cancellare i cookie di sessione dal javascript?" _, Fino a quando non ho trovato la risposta breve: era 'httpOnly' ... Grazie, molto utile. – BlitZ

+1

FYI: con _the HTTP_ nell'ultima frase di @ Gumbo, in realtà significa _server side_. – ThomasDC

6

Sono noti problemi con IE e Opera non rimuovere i cookie di sessione quando si imposta la data di scadenza per il passato (che è ciò che il cookie plugin per jQuery fa)

Questo funziona bene in Safari e Mozilla/Firefox.

-3

Eliminazione di un 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

Questo deve essere fatto sul lato server, in cui è stato emesso il cookie.

+0

perché lo pensi? – ysth

+0

Come si fa? Specificamente nel nodo se puoi! Grazie. –

32

Assicurarsi di fornire lo stesso percorso esatto di quando lo si imposta, vale a dire

Ambito:

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

Rimozione:

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

Nota che

$.cookie('foo', null); 

NON funzionerà, dal momento che io in realtà non è lo stesso cookie.

Spero che questo aiuti. Lo stesso vale per le altre opzioni nell'hash

+3

Grazie per aver chiarito questo.Vorrei poterlo votare un paio di volte. –

+1

questo post mi ha salvato ore di mal di testa. Grazie! – lfender6445