2010-06-02 12 views
28

Używanie JavaScript Chciałbym uzyskać wartość domain dla określonego pliku cookie.Jak uzyskać wartość domeny dla pliku cookie w JavaScript?

Czy to możliwe? Jeśli tak to jak?

Aby wyjaśnić: Nie szukam wartości z pliku cookie o wartości. Jestem na "subdomain.domain.com" i muszę usunąć plik cookie, którego nazwa jest znana, ale jego wartość domeny jest podobna do ".domain.com". W skrócie: chciałbym uzyskać wartość ".domain.com".

+1

Jedyny znany mi sposób uzyskania atrybutów plików cookie (ścieżka, domena, wygaśnięcie, bezpieczeństwo) polega na przypisaniu ich wartości podczas tworzenia lub modyfikacji pliku cookie lub jego wartości. – kennebec

Odpowiedz

35

Przepraszam, wszystko, co widzisz, to to, co widzisz w document.cookie. Metadane plików cookie, takie jak path, domain i expires, nie są widoczne dla kodu witryny (ani dla JavaScript, ani dla strony serwera).

Aby odczytać plik cookie, który jest w cieniu cookie z bardziej specyficznych domain lub path, jedyne co można zrobić, to załadować stronę dla których bardziej specyficzne Cookie jest out-of-zakres i czytać to stamtąd.

Jeśli, jak mówisz, trzeba tylko usunąć cookie, co można zrobić, to spróbować usunąć plik cookie na każdym możliwym poziomie swoistości, np .:

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'; 

i podobnie z zmienna path. Możesz umieścić to w zagnieżdżonej pętli dla każdej ścieżki i części domeny, dzieląc na . dla domeny i / dla ścieżki.

+3

Więc w zasadzie zalecamy bombardowanie dywanów. Nie widzę innego rozwiązania. :) – Wabbitseason

+0

Tak, to fajny sposób na opisanie tego! – bobince

+0

W jaki sposób program Firefox Web Developer "Wyświetlaj informacje o plikach cookie" to robi? Najwyraźniej informacje o domenie są gdzieś. – TARKUS

2

Można uzyskać dostęp tylko do plików cookie z tej samej domeny (w tym z subdomen). Oczywiście postępowanie w inny sposób stanowiłoby zagrożenie dla bezpieczeństwa.

+1

Myślę, że to nie do końca prawda. poddomeny mogą ustawić ciasteczka na *. Domena nadrzędna, jak rozumiem: https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com – hwjp

+1

Prawidłowe: jedna z rzeczy, które ciasteczka mogą zrobić, że localStorage nie może: możesz ustawić ją w głównej domenie. Programowe ustalenie, jaka domena "toplevel", na której można ją ustawić, może być skomplikowana: można ustawić plik cookie na amazon.com, ale nie na stronie co.uk, ponieważ jest to specjalny SLD. Zamiast tego musisz ustawić go na amazon.co.uk. Nie jest to tak proste jak "tylko dwa ostatnie segmenty". – Dtipson

Powiązane problemy