2011-12-07 40 views
1

我試圖從安全訪問的servlet中使不安全cookie失效/失效,並將重定向發送回客戶端。但是,當遵循重定向時,請求仍然包含原始的,未過期的,未經驗證的(是一個詞)cookie。當發送重定向響應不起作用時即將過期

這裏的流的更詳細的描述:
1)客戶端請求通過的Servlet A.支持的特定不安全URL
2)小服務程序甲檢測到有一個Cookie XX和重定向到由Servlet的支持安全的URL B
3)Servlet B發揮其魔力,然後通過將MaxAge設置爲0並通過不安全的URL重定向到Servlet A來使Cookie XX失效。
4)在Servlet A中,我仍然可以像訪問第一個請求一樣訪問cookie。

任何人都可以伸出援手嗎?我留下了印象,無法找到相反的證據,即當cookie發回重定向響應時,它仍然在新請求發出之前處理。這一切都發生在我可以訪問的所有瀏覽器(Chrome,FF,IE)中,所以我不認爲它是瀏覽器。在HTTPFox和Chrome Developer工具中,我可以看到第一個和第二個請求中發送的原始cookie,第二個請求的響應中返回的無效cookie以及第三個請求中發送的原始cookie。我已經嘗試將MaxAge設置爲0,將cookie的值設置爲空/空字符串,以及另一個值,但不會更改。如果有問題,所有的服務器端代碼都是用Java完成的。

幫助非常感謝。

+1

相關http://stackoverflow.com/questions/890935/how-do-you-remove-a-cookie-in-a-java-servlet – Gray

回答

0

這原來是我的一個疏忽。當Servlet B使Cookie XX失效時,它還將cookie的路徑設置爲除原來的內容之外的內容。實際上,這創建了Cookie XX-B,並且對原始Cookie XX沒有影響。確保我的cookie的路徑是相同的修復它。

0

您是否嘗試確保無效cookie的域名和路徑與原始cookie相同?

此外,處理敏感Cookie的更好方法是在原始cookie上設置「安全」標誌。這將告訴瀏覽器不要通過不安全的連接發送cookie。

相關問題