2013-04-24 8 views
18

Mój znajomy, Carsten Lau, przyszedł z ciekawym pomysłem, jak czytać pliki cookie z obsługą wielu domen.Pliki cookie z różnych dziedzin - może nowy pomysł

Sytuacja: Chcesz odczytać plik cookie z domeny "A" ustawionej w domenie "B". Idea: Z klienta w domenie "A", wykonujesz żądanie pobrania do zasobu dynamicznego w domenie "B" - f.e. obraz lub javascript, który na serwerze "B" jest w rzeczywistości językiem programowania zdolnym do czytania ciasteczek takich jak PHP, Java itd. Z tym żądaniem wysyłasz unikalny identyfikator, taki jak identyfikator sesji. Więc kod po stronie klienta, który patrzy na miejscu w domenie „A” może wyglądać następująco:

<img src="www.domainB.com/?getCookie.php?sessionID=1234"> 

Teraz przychodzi zabawną część, serwer B czytamy na stronie serwera plik cookie ustawiane przez domenę „B” zapisuje wynik z podanym identyfikatorem sesji w DB dostępnym dla domeny "A" lub zwraca odpowiedź, która zawiera informację cookie do klienta w domenie "A", która następnie wysyła ją przez AJAX do serwera "A".

Jestem prawie pewny, że istnieje usterka, której jeszcze nie znaleźliśmy. Osobiście uważam, że serwer "B" nie będzie w stanie odczytać informacji o plikach cookie, ponieważ adres URL przeglądarki klienta wskazuje na domenę "A", ale oczywiście wyjaśnienie "getCookie" powyżej wskazuje na "B".

Poinformuj nas, co o nim sądzisz, dlaczego działa i dlaczego nie działa. Mały dowód koncepcji był, ku mojemu wielkiemu zaskoczeniu, udany.

+2

To powinno zadziałać. W rzeczywistości w ten sposób strony internetowe obsługują logowania użytkowników z różnych domen, ponieważ domeny udostępniają bazy danych zawierające dane sesji. – Joseph

+1

Dzięki. Wszędzie w Internecie i tutaj na SO można przeczytać "ciasteczka cross-domain = impossible", podczas gdy w rzeczywistości prosty hack umożliwia, jeśli jesteś właścicielem obu domen i może dodać trochę skryptu w domenie "B"? Dziwne ... –

+7

Nie ma w tym nic dziwnego. Nie czytasz ani nie konfigurujesz ciasteczka dla innej domeny - to jest niemożliwe z twojej domeny. Jeśli masz "pomoc" z innej domeny, to jest mało "między-domeną" o tym - otrzymujesz informację _by wybór_ z innej domeny; mając na uwadze, że stosuje się politykę międzydomenową, aby zapobiegać temu, gdy druga domena tego nie chce. – CBroe

Odpowiedz

15

Jest to normalne, ponieważ masz kontrolę nad 2 domenami. W ten sposób większość witryn uzyskuje możliwość jednokrotnego logowania w wielu domenach. Ale jeśli nie masz kontroli nad drugą domeną, nie możesz odczytać z niej plików cookie.

+3

masz rację, niemniej jednak przez większość czasu, gdy szukasz ustawień ciasteczek z różnymi domenami, wszystkie odpowiedzi są proste (i fałszywe) "niemożliwe". Jeśli posiadasz obie domeny, nie ma problemu. –