打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IE的cookie机制导致的session问题及解决办法

昨天發現IE無法獲取到cookie,而其他瀏覽器可以,後來加了response.addHeader("P3P","CP=CAO PSA OUR"),就解決了

IE的cookie机制导致的session问题及解决办法

一个用jsp开发的web应用,使用了session作为sigle sign on的实现。在用firefox浏览时没有问题,用IE 6浏览时刚开始也可以,点过几次后就会出现session lost的错误。

检查发现IE6浏览时,web服务器端日志记下的sissionid变了。由于sessionid一般存在于cookie,推测是IE的cookie机制导致的问题。考虑到这个应用使用了frameset,参考文章:http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q323752

在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie,也就是 在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏 览器的。

那么,解决的办法,自然是对frame里面的第三方站点的response header里面添加一个确认信息,在MSDN里面有个最简单的解决办法:response.addHeader("P3P","CP=CAO PSA OUR")。

最简单的办法,是用一个filter,对所有路径下的uri,都设置response.setHeader("P3P","CP=CAO PSA OUR")。

上面是microsoft提供的办法,以下是likebao的办法:tomcat关闭cookies,用URL重写传递sessionid。

1.tomcat关闭cookies,强制使用URL Rewriting

增加E:\jakarta-tomcat-5.0.28\conf\Catalina\localhost\XXApp.xml

内容如下:

<Context path="/XXApp" docBase="${catalina.home}/webapps/XXApp"
        debug="0" privileged="true" cookies="false">
</Context>

2.URL重写传递seesionid

    <%

            String sid=session.getid();

             response.redirect("xxxx123.jsp;jsessionid="+sid);

    %>

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
asp.net
深入理解Servlet/JSP之“Cookie和Session原理”
Tomcat中的Session小结
ASP.NET的六大内置对象总结
JSP中实现网站自动登录
Cookies常用命令简介
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服