2014-06-24 16 views
59

Mamy witrynę (www.example.com), która wysyła użytkowników na serię stron osób trzecich w celu zweryfikowania szczegółów płatności, które robimy w iframe. Początkowo strona lokalna ze strony www.example.com jest ładowana do elementu iframe, a użytkownik jest przekierowywany na adres strony trzeciej. Po wykonaniu kroków strony trzeciej przez użytkownika są one przekierowywane z powrotem do strony w naszej witrynie (www.example.com) w elemencie iframe.IE 11 plików cookie pierwszej sesji utraconych w iframe

Działa to we wszystkich przeglądarkach, które przetestowaliśmy z wyjątkiem IE 11, gdzie nasze pliki cookie wydają się być utracone. Sprawdziliśmy to zarówno pod Windows 7, jak i 8.1, zarówno w trybie "stacjonarnym", jak i "Metro", a problem dotyczy wszystkich wersji.

Gdy użytkownik przegląda naszą stronę, ustawiamy plik cookie sesji, który jest poprawnie wysyłany na stronę własną, która jest początkowo załadowana do elementu iframe. Po przejściu przez użytkownika stron trzecich w tym elemencie iframe, plik cookie sesji nie jest wysyłany przy następnym żądaniu.

Jeśli ustawimy ustawienie prywatności IE 11 na najniższą wartość, problem zniknie i wszystko będzie działać zgodnie z oczekiwaniami.

Wszystkie potencjalne rozwiązania, które pojawiły się do tej pory, mają związek z nagłówkami P3P. Mamy poprawny i właściwy plik nagłówka P3P i polityki XML skonfigurować, a ten problem występuje tylko w IE 11.


Aktualizacja: mamy kilka innych cookies utworzone za pomocą JS. Wszystkie one utrzymują się zgodnie z oczekiwaniami. Różnice są datą wygaśnięcia (1 rok dla plików cookie JS, 1 miesiąc dla plików cookie sesji), domena (jawnie "example.com" dla plików cookie JS, pusty dla sesji cookie) i czy są to "tylko HTTP" (false dla JS pliki cookie, prawdziwe w przypadku plików cookie sesji).

Próbowałem ustawić wszystkie te opcje zgodnie z ciasteczkami JS dla pliku cookie sesji, ale to nie miało znaczenia.


Aktualizacja 2: Po więcej testów nie udało mi się stworzyć przypadek testowy, który odtwarza ten problem. Wszelkie dodatkowe pliki cookie, które próbuję przetestować za pomocą kodu live, również wydają się być uszkodzone, nawet jeśli są ustawione dokładnie tak samo jak pliki cookie JS, które działają. W skrócie; Nie znalazłem jeszcze żadnego wzorca do plików cookie, które działają i tych, które nie działają.

Jedną z potencjalnie interesujących rzeczy jest to, że pliki cookie nie są usuwane, po prostu nie są wysyłane do ostatecznego wniosku. Jeśli załadowana zostanie inna strona, pliki cookie pojawią się w magiczny sposób i zostaną wysłane; co prowadzi mnie do przekonania, że ​​jest to błąd otaczający iframe i P3P.


Update 3 (dzień 3): obsługa ciasteczek IE 11 w dalszym ciągu mnie zawstydzić. Im dalej podróżuję do labiryntu Microsoftu, tym bardziej gubię się wśród jego ruchomych ścian. I są tu duchy. Fragmenty na wpół wymyślonej polityki bezpieczeństwa, które utkały się w jakieś eteryczne stworzenie, które śledzi mnie i prowokuje przy każdym posunięciu. Z początku byłem zamrożony, przerażony, przerażony ledwie wyczuwalną postacią, rzucającą się tylko poza zasięg wzroku, ale z każdą godziną gromadzę więcej pociechy od samej wiedzy o jego bliskości. Czy to może być ta bestia, którą przysłano mi tutaj, aby stawić czoła? Jak mogłem zabić mojego jedynego towarzysza w takich czasach?

+0

Czy możesz pokazać nagłówek P3P, którego używasz? – vtortola

+0

'P3P: CP =" WSZYSTKIE DSP COR CUR ADM PSA CONI NASZE SAM OTR UNR LEG "' Bez tego nagłówka żadne pliki cookie nie działają w elemencie iframe, zgodnie z oczekiwaniami. Niektóre pliki cookie działają, ale niektóre, na pozór przypadkowe, nie są. Nie mogłem znaleźć wzorca ani niczego innego na temat tych, które nie działają. –

+0

Wypróbuj http://stackoverflow.com/a/13975828/307976 – vtortola

Odpowiedz

-5

Sprawdź opcje internetowe w IE11. Narzędzia> Opcje internetowe> Prywatność> Zaawansowane

Może powinieneś to zmienić i włączyć opcję "Zawsze zezwalaj na pliki cookie sesji".

-1

Mam ten sam problem, który jest wymieniony na ten temat.

Nasza witryna jest umieszczona w elemencie iframe i używa sesji do cookie (asp.net_session). Podczas nawigacji na stronie nie ma problemu (pliki cookie działają i są dołączone do nagłówków zapytań). Ale kiedy przekierowujemy klienta do innej strony internetowej (othersite.com), wtedy othersite.com przekierowuje klienta do naszej domeny i zmusza go do otwarcia jako "_top", przeglądarka nie wysyła plików cookie z prośbami, abyśmy stracili sesję klientów. Ten problem wystąpił tylko w IE.

Co możesz poradzić, aby rozwiązać ten problem.

+0

Niestety, nigdy nie znalazłem rozwiązania tego problemu i wiem, że deweloper, który odziedziczył go, napotkał problem rok czy później. Sprawdź nagłówki P3P i powodzenia! –

1

Zauważyłem, że sesyjne pliki cookie są często tracone, gdy włączony jest tryb zgodności IE7 dla nowej strony. Przypuszczam, że to samo można zastosować do elementu iframe. Czy element iframe wysyła wartość nagłówka zgodną z X-UA, która jest inna niż strona nadrzędna lub inna niż wcześniej w sesji? Może twoja sesja zaczyna się od IE = edge, a strona iframe ustawia ją na IE = 7. Jeśli tak, to IE wydaje się uruchamiać nowy IE PID dla stron trybu kompatybilności i ciasteczek sesyjnych (ale wydaje się, że nie zostaną przeniesione)

5

Znaleźliśmy podobny problem z Internet Explorerem 11, w którym zniknęło ciasteczko sesji . po przekierowaniu przez HTTPS

łańcuch żądanie wyglądał mniej więcej tak:

pierwotny wniosek do/->session cookies ustawiony->przekierować do zewnętrzny URL->przekierowanie z powrotem (session cookies utracone)

Nasz problem był spowodowany nieprawidłową nazwę hosta według RFC952, mieliśmy podkreślenia w naszym serwerze testowym URL. Wygląda na to, że Internet Explorer po cichu odrzuca plik cookie sesji w przekierowaniu przez stronę https, jeśli adres URL nie jest zgodny z RFC952. W przypadku używania kresek zamiast podkreśleń wszystko działało zgodnie z oczekiwaniami.

Oryginalny rozwiązanie zostało znalezione w Update 2 części tego biletu asp.net blogpost from 2004. Podobne Microsoft bug here.

Mam nadzieję, że to pomoże ktoś.

+0

Zabawny Znalazłem ten problem w 2008 roku - podkreślenia w nazwach domen są niedozwolone z tego powodu. –

Powiązane problemy