2011-07-26 26 views
8

在我的spring應用程序中,我嘗試設置cookie並重定向到讀取cookie的頁面。重定向到另一個網頁的工作,但設置cookie只會在IE9中失敗。IE 9設置cookie並重定向失敗

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

重定向正如我所說的FF3 +,Chrome和IE7/IE8,做工精細的處理團購設置的ModelAndView

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

。我的應用出了什麼問題?有什麼建議麼?

+1

使用招捕捉你302的HTTP響應頭,並張貼在這裏。 – EricLaw

+0

和你的createCookie方法做什麼? –

+0

'HTTP/1.0 302暫時移動 日期:星期三,2011年7月27日9時27分12秒GMT 位置:/login/index.html 有所不同:接受編碼 內容編碼:gzip 的Content-Length:20 內容類型: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) 連接:保持活動 代理連接:保持活動狀態 – Nils

回答

3

一些嘗試後我添加以下內容:

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

現在它爲我工作,不知道這是否是正確的解決方案,不知道爲什麼IE9緩存不同,但現在它工作...謝謝你們。

+0

我已經在我的回覆中,它仍然沒有工作? – buddyp450

2

我之前有重定向失敗的問題。奇怪的是,它似乎在Firefox中工作,但在IE中失敗。該解決方案是一個完整的URL添加到重定向聲明,即

http://foo.com/new_site.html 

,而不是

new_site.html 
+0

我的redirectURL是像http://yyy.google.com – Nils

+0

嘗試添加http://在它的前面。這似乎是一個IE安全設置問題。 – Raku

+0

哦對不起,它是'http:// yyy.google.com'(被評論框忽略),即使回調沒有設置http(s),我的應用程序添加了這個。 – Nils

5

我有類似的問題,與IE 8,9和10和緩存控制頭沒有幫助。經過進一步的研究後,我不得不將一個P3P privacy policy(來自較舊的Java Web應用程序)放在適當位置,並且IE無需緩存控制標頭即可正確存儲Cookie。

這種策略格式現在只有Internet Explorer才能使用,但它提供了管理cookie的唯一可靠方法,無需手動更改IE隱私設置。 P3P隱私策略有兩個部分:策略文件和緊湊策略標頭。緊湊的政策頭似乎工作得很好。爲了簡潔起見,不同類別的P3P具有緊湊的編碼,例如,導航=> NAV。至少,我會從簡潔政策的INT,NAV和UNI代碼開始。

下面是如何傳回了頭兩個例子:

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

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

確認。這個特定的P3P標題爲我解決了IE11(Edge)中的「cookie未設置爲POST重定向」問題。沒有其他改變。當此方法開始失敗時,回退到基於META標記的刷新/重定向:http://webmaster.iu.edu/tools-and-guides/maintenance/redirect-meta-refresh.phtml – ddotsenko