我们有一个J2EE应用程序(仅在 -cough - IE上运行),它使用JSESSIONID来管理客户端和服务器之间的会话状态。我们的一些客户使用客户端Javascript onload方法调用的第三方Web应用程序(https://mdoffice.sentara.com/):
document.execCommand("ClearAuthenticationCache");
这会在浏览器中粉碎我们的JSESSIONID cookie,从而导致应用服务器将我们的IE客户端窗口的后续请求视为无效或超时会话,并且用户被踢出。我们的服务器是OAS / OC4J,但我怀疑这很重要:如果我在登录我的网上银行时点击上面的URL,就会出现同样的基本行为。
在尝试研究这个时,我发现大多数人都有兴趣在非IE浏览器中复制这种行为。我对如何防范感兴趣。我们验证了我们的会话cookie具有域范围,但上述命令似乎并不尊重这一点。我们有一个蹩脚的解决方法,我们使用 -noframemerging 参数启动IE。这很难看,并且最终弄乱了我们试图将客户端限制为单一登录的逻辑。
我在MSDN上找不到多少有用的东西,但是这篇文章(http://blogs.msdn.com/b/ieinternals/archive/2010/04/05/understanding-browser-session-lifetime.aspx)确实清楚地说明上面的命令“...清除会话cookie ... ALL 在当前会话中运行的网站“。
有没有人知道:
感谢您的帮助!