我們在同一個域上的多個路徑上部署了多個Web應用程序副本。
實施例:當路徑重疊時,Internet Explorer發送錯誤的Cookie
每個實例維護一組餅乾中的每一個定義其path
作爲"/" + .getWebDirRoot()
- 即/abc
,/xyz
,/abc123
當執行流程如下:
- 登錄http://mydomain.com/abc
- 執行某些活動
- 註銷
- 登錄http://mydomain.com/abc123
- 執行某些活動< - 失敗
最後一步失敗了ince IE
發送給我們不正確的cookie - 它發送一個爲http://mydomain.com/abc而不是一個http://mydomain.com/abc123
這不會發生在FireFox中。 (而且我還沒有嘗試過任何其他瀏覽器)。
這是已知的行爲IE
(我測試了IE9
和IE8
)?
有沒有辦法來克服它(以編程方式)?
注:我想弄清楚,這並不http://mydomain.com/abc到http://mydomain.com/xyz切換時發生 - 行爲被嚴格限制到currentUrl.startswith(urlAssociatedWithCookie) == true
我檢查使用提琴手行爲流 - 我清楚地看到HTTP請求abc123
與屬於abc
的cookie的值一起發送。
我還檢查了FireFox上的cookies,它們和預期的一樣 - 每個路徑創建一個。從理解除了當IE
看見來自域xyz
和路徑abc
一個cookie,它會發出它發送的任何要求 -
感謝了深入調查。知道這可能會在未來爲我節省很多戲劇。 –
它發生在我身上(並得出了相同的結論)。感謝您節省我的時間來找到規範和在IE瀏覽器中的bug的描述! – helios
對於在Apache Tomcat上部署的每個人:從Tomcat7開始Tomcat會自動向cookie路徑添加尾部斜槓(「/」)以避免此問題。你可以通過設置'sessionCookiePathUsesTrailingSlash = false'來禁用'context.xml'中的這個特性(參見http://tomcat.apache.org/tomcat-7.0-doc/config/context.html) –