2013-07-21 5 views
7

Sagen wir, ich bin bei http://www.example.com und ich möchte ein Cookie löschen, dessen Domäne .example.com ist und ein anderes, dessen Domäne ist www.example.com.Wie lösche ich einen Cookie aus einer bestimmten Domain mit Javascript?

Ich bin derzeit mit dieser generischen Funktion:

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

die Cookies nur deren Domäne entfernt zu sein scheint, ist www.example.com.

Aber wie kann ich angeben, dass es auch Cookies entfernt, deren Domäne ist .example.com?

EDIT: Grundsätzlich bin ich auf der Suche nach einer Funktion, die alle Cookies im Zusammenhang mit http://www.example.com löschen können, solange sie nicht die httponly-Flag haben. Gibt es eine solche Funktion?

+0

möglich Duplikat [Löschen aller Cookies mit JavaScript] (http : //stackoverflow.com/questions/179355/clearing-all-cookies-with-javascript) –

Antwort

6

Aus Sicherheitsgründen dürfen Sie ein Cookie auf einer anderen Website nicht bearbeiten (oder löschen). Da es keine Garantie dafür gibt, dass Sie sowohl foo.domain.com als auch bar.domain.com besitzen, dürfen Sie die Cookies von foo.domain.com von bar.domain.com und umgekehrt nicht bearbeiten.

Überlegen Sie, ob Sie das tun dürfen, und gehen Sie auf eine bösartige Website, dann zurück zu Ihrer Bank, wo Sie einen Scheck auf Ihr Bankkonto einzahlen wollten. Aber während Sie auf der bösartigen Website waren, haben sie Ihren Bank-Cookie mit ihren eigenen Bankdaten aktualisiert. Jetzt wurde der Scheck plötzlich auf dem Bankkonto des Besitzers der bösartigen Website hinterlegt.

+0

Ja kann ich. Ich habe gerade meine Chrome-Konsole auf yahoo.com geöffnet und die Funktion meines ursprünglichen Posts aufgerufen, der einen auf www.yahoo.com gesetzten Cookie gelöscht hat. Ich kann jedoch anscheinend keine Cookies von .yahoo.com löschen. Ich bin auf der Suche nach einer Funktion, die dies tun kann, indem Sie die Domäne angeben, aus der der Cookie gelöscht werden soll. –

+0

@TheRandomGuy Die Chrome-Konsole funktioniert nicht unter den gleichen Einschränkungen wie der von einer Website ausgeführte Code. Auf der Website 'foo.domain.com' können Sie den Cookie auf' bar.domain.com' nicht bearbeiten. Siehe [andere] (http://stackoverflow.com/questions/117240/is-it-possible-to-delete-subdomain-cookies) [ähnlich] (http://stackoverflow.com/questions/6525484/deleting-cookies -in-andere-Subdomains) [Fragen] (http://stackoverflow.com/questions/3923285/how-to-remove-main-domain-cookie-from-sub-domain) wenn Sie nicht davon überzeugt sind. – kba

+0

Ich versuche nicht, Cookies aus einer Domain zu löschen, auf die mein Skript nicht feuert. Mein Skript wird z. www.someurl.com und ich möchte, dass mein Skript die maximale Anzahl der möglichen Cookies von www.someurl.com und .someurl.com löscht –

6

Sie könnten dies nur tun, wenn Sie bei http://example.com waren und löschen möchten http://blah.example.com Cookie. Es funktioniert auch nicht von www.example.com - nur die "base" -Domain kann Subdomain-Cookies löschen.

Es gibt auch "all-subdomain" -Cookies, die mit einem. Beginnen, und auch nur von der Basis-Domain gelöscht werden können.

Von der Basis-Domäne, dies sollte es löschen arbeiten:

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

Oder die hervorragende jquery.cookie Plugin:

$.cookie('my_cookie',null, {domain:'.example.com'}) 
Verwandte Themen