2010-06-02 3 views
28

Mit Javascript möchte ich den domain Wert für einen bestimmten Cookie erhalten.Wie bekomme ich den Domain-Wert für einen Cookie in Javascript?

Ist das möglich? Wenn das so ist, wie?

Um zu verdeutlichen: Ich bin nicht auf der Suche nach Wert des Cookies. Ich bin auf "subdomain.domain.com" und ich muss ein Cookie entfernen, dessen Name bekannt ist, aber sein Domänenwert ist etwas wie ".domain.com". Kurz gesagt: Ich möchte den Wert von ".domain.com" erhalten.

+1

Die einzige Möglichkeit, Cookie-Attribute (Pfad, Domäne, Ablaufdatum, Sicherheit) zu erhalten, besteht darin, sie auf den Wert zu kleben, wenn Sie den Cookie oder dessen Wert erstellen oder ändern. – kennebec

Antwort

35

Entschuldigung, alles, was Sie bekommen, ist, was Sie in document.cookie sehen. Die Cookie-Metadaten wie path, domain und expires sind für Site-Code nicht sichtbar (weder für JavaScript noch für die Server-Seite).

ein Cookie zu lesen, die mit einem mehr spezifischen domain oder path durch ein Cookie beschattet wird, das einzige, was man für die eine Seite tun können, ist laden out-of-scope, desto mehr spezifische Cookie ist und gelesen es von dort. wie Sie

Wenn, sagen wir, müssen Sie nur ein Cookie entfernen, was Sie können, ist zu tun versuchen, den Cookie auf allen möglichen Ebenen der Spezifität zu entfernen, zB .:

document.cookie= 'foo=;domain=sub.domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=domain.example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 
    document.cookie= 'foo=;domain=example.com;expires=Sat, 01-Jan-2000 00:00:00 GMT'; 

und in ähnlicher Weise mit die path Variable. Sie könnten dies in eine verschachtelte Schleife für jeden Pfad und jeden Teil der Domäne einfügen, die sich auf . für die Domäne und / für den Pfad aufteilt.

+3

Also im Grunde empfehlen Sie Teppichbombardement. Ich kann auch keine andere Lösung sehen. :) – Wabbitseason

+0

Ja, das ist eine schöne Art, es zu beschreiben! – bobince

+0

Wie macht das Firefox Web Developer-Dienstprogramm "Cookie-Informationen anzeigen"? Anscheinend ist die Domaininformation irgendwo da. – TARKUS

2

Sie können nur auf Cookies von derselben Domain (einschließlich Subdomains) zugreifen. Offensichtlich wäre sonst ein Sicherheitsrisiko.

+1

Ich denke, das ist nicht ganz richtig. Subdomains können Cookies für ein * setzen. Übergeordnete Domain, wie ich es verstehe: https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com – hwjp

+1

Richtig: eines der Dinge, die Cookies tun können, die localStorage nicht kann: Sie können es in der Hauptdomain einstellen. Programmatisch herauszufinden, was die "Toplevel" -Domäne, auf die Sie sie setzen können, ist, kann jedoch komplex sein: Sie können ein Cookie auf amazon.com setzen, aber nicht auf co.uk, da es sich um ein spezielles SLD handelt. Sie müssten es stattdessen auf amazon.co.uk einstellen. Es ist also nicht so einfach wie "nur die letzten zwei Segmente". – Dtipson

Verwandte Themen