2012-10-18 9 views
8

Mam problem z ustawieniem plików cookie w elemencie iframe (który ładuje witrynę z innej domeny).
Na mojej stronie X.COM ładuję <iframe src='Y.COM'>Pliki cookie z wieloma domenami w iframe Safari

Y.COM próbuje ustawić pliki cookie, ale Safari je blokuje, ponieważ ta strona nie była wcześniej odwiedzana. Ładowanie pliku Y.COM kończy się niepowodzeniem, ponieważ nie może działać bez plików cookie. Czy istnieje sposób na rozwiązanie tego problemu?

P.S. Nie mogę modyfikować żadnych danych na Y.COM.

P.S.S. Możemy również zmodyfikować ustawienia przeglądarki Safari - "Accept cookies" = "Always", ale nie jest to rozwiązanie dla mnie - wydaje się niemożliwe, aby każdy użytkownik mógł to zrobić.

+0

Myślę, że blokowanie tego jest takie, że nie powinno działać. Utworzenie obejścia naruszyłoby zaufanie użytkowników. –

+0

Ktoś więc poszedłby na twoją stronę, a strona z twojej strony załadowałaby stronę na drugą stronę ORAZ przeniosłaby pliki cookie do witryny, której nigdy nie zażądał użytkownik? Mam nadzieję, że Safari i każdy inny blok też to. –

+1

@JamesMohler, nie wierzę, że mówi X.COM * wysyła pliki cookie do Y.COM, tylko że Y.COM wymaga plików cookie do działania, a po załadowaniu w iframe nie jest w stanie ich ustawić. –

Odpowiedz

4

Eksperymentowałem z podobnym problemem. Strona internetowa "rodzica" otwiera moją "podrzędną" stronę internetową w międzydomenowej domenie jquery fancybox i-frame. Nie ma problemu z przeglądarką, Chrome, Firefoksem, Operą, a nawet z Safari (5.8.1) na MAC. Ale w przypadku iPhone'a, iPada i mini iPada sesja w i-ramce zostaje utracona.

To znaczy, że za każdym kliknięciem elementu w i-ramce (strona internetowa jest w aspxie) rozpoczęła się nowa sesja.

Rozwiązujemy ten problem w bardzo prosty sposób:

gdy początek strona dominująca, to wezwać stronę w miejscu bezpośrednio nad dziećmi (nie w I-Frame). Na tej stronie ustawiam tylko zmienną sesji i przekierowuję do strony nadrzędnej. Teraz, gdy strona podrzędna jest otwarta w elemencie iframe, sesja jest zachowywana.

+0

Działa jak urok. Wyrenderowałem łącze na mojej stronie z komunikatem iframed, na przykład ''. Następnie natychmiast kliknij JS: '$ ('a') [0] .click()'. Następnie trasa na moim serwerze '/ path/to/redirect_with_session' ustawia flagę sesji' session ['_ ready'] = true', a następnie przekierowuje z powrotem do 'params [: to]'. Wtedy mogę zdecydować, czy wykonać ten przepływ przekierowania, tylko jeśli jest to safari i sesja nie została jeszcze zainicjowana. – colllin