我们有多个副本的Web应用程序,部署在同一域上的多个路径上。
例如:
在执行以下流程时:
- 登录http://mydomain.com/abc - 执行某些活动 - 注销 - 登录http://mydomain.com/abc123 - 执行某些活动<--失败
最后一步失败是因为IE向我们发送了不正确的cookie - 它发送了http://mydomain.com/abc的cookie而不是http://mydomain.com/abc123的cookie。
在FireFox中不会发生这种情况。(我没有尝试其他浏览器。)
这是否是IE的已知行为(我测试过IE9和IE8)?
有没有方法可以在程序上克服它?
注意: 仅需澄清,当从http://mydomain.com/abc切换到http://mydomain.com/xyz时不会发生此情况 - 行为严格限制于currentUrl.startswith(urlAssociatedWithCookie) == true
的流程中。
我使用Fiddler检查了该行为 - 我清楚地看到发送给abc123
的HTTP请求带有属于abc
的cookie值。
我还在FireFox上检查了cookie,它们的表现如预期 - 每个路径都创建了一个cookie。
context.xml
中设置sessionCookiePathUsesTrailingSlash=false
来禁用此功能(请参阅 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html)。 - Stefan Haberl