2011-07-26 10 views
8

W mojej aplikacji wiosennej staram się ustawić plik cookie, a następnie przekierować na stronę, na której czytany jest plik cookie. Przekierowanie do innej strony działa, ale ustawienie plików cookie kończy się niepowodzeniem tylko w IE9.IE 9 ustawić ciasteczko i przekierowanie nie działa

Cookie cookie = MyCookieHandler.createCookie(parameters, domain); 
response.addCookie(cookie); 

Przekierowanie jest obsługiwane kupna ustawiania ModelAndView

modelView = new ModelAndView("redirect:" + getCallback()); 

Jak powiedziałem Współpracuje w FF3 +, Chrome i IE7/IE8. Co złego jest w mojej aplikacji? Jakieś sugestie?

+1

Przechwytywania swoje nagłówki HTTP 302 reagowania za pomocą Skrzypek i umieszczać je tutaj. – EricLaw

+0

i co robi twoja metoda createCookie? –

+0

'HTTP/1.0 302 Moved Tymczasowo Date: Wed, 27 lipca 2011 09:27:12 GMT Lokalizacja: /login/index.html Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 20 Content-Type: text/html; charset = ISO-8859-15 X-Cache: MISS from ham-dmz-mns1.mobilcom.de X-Cache-Lookup: MISS from ham-dmz-mns1.myserver.de:8080 Via: 1.0 ham-dmz -mns1.myserver.de:8080 (squid/2.7.STABLE5) Połączenie: keep-alive Proxy-Connection: keep-alive' – Nils

Odpowiedz

3

Po kilku próbach I dodaje następujące:

response.addHeader("Pragma", "no-cache"); 
response.addHeader("Cache-Control", "no-cache"); 

Teraz pracuje dla mnie , nie wiem, czy to jest właściwe rozwiązanie i nie wiem, dlaczego buforowanie jest inne w IE9, ale teraz działa ... dzięki chłopaki.

+0

Miałem to już w mojej odpowiedzi i nadal nie działa? – buddyp450

2

Miałem problem wcześniejszego przekierowania. Dziwnie to działało w Firefoksie, ale nie udało się to w IE. Rozwiązaniem było dodać pełny adres URL do rachunku przekierowania, tzn

http://foo.com/new_site.html 

zamiast

new_site.html 
+0

mój redirectURL jest jak http://yyy.google.com – Nils

+0

Spróbuj dodać przed nim http: //. To wydaje się być problem z ustawieniami zabezpieczeń IE. – Raku

+0

oh przepraszam, był to "http: // yyy.google.com" (został zignorowany przez komentarz) i nawet jeśli wywołanie zwrotne zostało ustawione bez http (ów), moja aplikacja to doda. – Nils

5

Miałem podobne problemy z IE 8, 9 i 10, a nagłówki kontroli pamięci podręcznej nie pomogły. Po dalszych badaniach musiałem wstawić (ze starszej aplikacji internetowej Java) w miejscu, a IE poprawnie zapisał plik cookie bez nagłówków kontroli pamięci podręcznej.

Ten format polityki jest obecnie honorowany tylko przez przeglądarkę Internet Explorer, ale stanowi jedyny niezawodny sposób zarządzania plikami cookie bez ręcznych zmian w ustawieniach prywatności IE. Zasady ochrony prywatności P3P składają się z dwóch części: pliku zasad i nagłówka zasad. Wydaje się, że zwarty nagłówek polityki działa wystarczająco dobrze. Różne kategorie P3P mają zwarte kody dla zwięzłości w nagłówku, np. navigation => NAV. Co najmniej zacznę od kodów INT, NAV i UNI dla polityki zwartej.

Oto dwa przykłady jak przejść z powrotem nagłówek:

Grails/Java: 
    response.setHeader("P3P", "CP='INT NAV UNI'"); 

PHP: 
    header('P3P:CP="INT NAV UNI"') 
+0

Potwierdzanie. Ten konkretny nagłówek P3P rozwiązał dla mnie problem "cookie nie ustawiony na przekierowanie POST" z IE11 (Edge). Nic innego się nie zmieniło. Kiedy ta metoda zaczyna się nie udać, cofnij się do odświeżania/przekierowania opartego na tagach META: http://webmaster.iu.edu/tools-and-guides/maintenance/redirect-meta-refresh.phtml – ddotsenko