2013-07-21 23 views
7

Diciamo che sono a http://www.example.com e voglio eliminare un cookie il cui dominio è .example.com e un altro il cui dominio è www.example.com.Come si elimina un cookie da un dominio specifico utilizzando Javascript?

Attualmente sto usando questa funzione generica:

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

che sembra solo di essere la rimozione di cookie il cui dominio è www.example.com.

Ma come è possibile specificare in modo che rimuova anche i cookie il cui dominio è .example.com?

EDIT: Fondamentalmente sto cercando una funzione che può eliminare tutti i cookie relativi a http://www.example.com fintanto che non hanno il flag HttpOnly. Esiste una tale funzione?

+0

possibile duplicato di [Cancellazione di tutti i cookie con JavaScript] (http : //stackoverflow.com/questions/179355/clearing-all-cookies-with-javascript) –

risposta

6

Per motivi di sicurezza, non è consentito modificare (o eliminare) un cookie su un altro sito. Poiché non è garantito che possiedi sia foo.domain.com e bar.domain.com, non ti sarà consentito modificare i cookie di foo.domain.com da bar.domain.com e viceversa.

Considerate se vi fosse permesso farlo e siete andati a un sito malevolo, quindi tornate alla vostra banca dove stavate per depositare un assegno nel vostro conto bancario. Ma mentre si trovano sul sito dannoso, hanno aggiornato il cookie della banca con le proprie informazioni bancarie. Ora, improvvisamente, il controllo verrebbe depositato nel conto bancario del proprietario del sito dannoso.

+0

Sì, posso. Ho appena aperto la mia console di Chrome su yahoo.com e ho chiamato la funzione del mio post originale che ha eliminato un cookie impostato su www.yahoo.com. Tuttavia, non riesco a eliminare i cookie di .yahoo.com. Sto cercando una funzione che possa farlo specificando il dominio da cui eliminare il cookie. –

+0

@TheRandomGuy La console di Chrome non funziona con le stesse restrizioni del codice eseguito da un sito web. Sul sito 'foo.dominio.com' non potrai modificare il cookie su' bar.dominio.com'. Vedi [altro] (http://stackoverflow.com/questions/117240/is-it-possibile-per-delete-subdomain-cookies) [simile] (http://stackoverflow.com/questions/6525484/deleting-cookies -in-altri-sottodomini) [domande] (http://stackoverflow.com/questions/3923285/how-to-remove-main-domain-cookie-from-sub-domain) se non sei convinto. – kba

+0

Non sto cercando di eliminare i cookie da un dominio in cui il mio script non verrà attivato. Il mio script verrà caricato ad es. www.someurl.com e voglio che il mio script elimini il numero massimo di cookie possibile da www.someurl.com e .someurl.com –

6

È possibile eseguire questa operazione solo se si era al numero http://example.com e si desidera eliminare il cookie http://blah.example.com. Neanche il dominio "base" può eliminare i cookie di sottodominio.

Esistono anche i cookie "tutti i sottodomini", che iniziano con un. E possono essere eliminati solo dal dominio di base.

Dal dominio di base, questo dovrebbe funzionare per eliminarlo:

document.cookie = 'my_cookie=; path=/; domain=.example.com; expires=' + new Date(0).toUTCString(); 

o utilizzando l'ottimo plug jquery.cookie:

$.cookie('my_cookie',null, {domain:'.example.com'}) 
Problemi correlati