iframe 中的session和cookie特殊问题

前段时间在维护项目的时候,应客户要求需要新做一个嵌套到其他网站首页里的登陆小页面,首页是别人的域名,小页面是我们的域名,而且用户登陆处理都在小页面里跳转,首页不刷新或提交,本来原来就有登陆的代码,只需要修改一下展现页面就可以了,可是最终发现没有那么简单,首先是登陆成功后的session中的值在成功页面取不到,还有就是我们在cookie里存取的单点登陆信息也是取不到的,最后Google了一下,并做了一个demo测试通过后,总算修改完成了。汗!!!现在总结一下:

session取不到的问题:

登陆页面上有验证码是放到session中的,则需要在提交的url上追加jsessionid就可以了。

引用image.jsp写法:

<img src="<%=request.getContextPath()%>/webadmin/js/imagecode2.jsp;jsessionid=<%= session.getId()%>" name=Image1 border=0 >

  提交地址写法:

form的action="<%=request.getContextPath()%>/webadmin/userselfservice/login/login.do;jsessionid=<%=session.getId()%>"

  这样到了Baction中,取得的是同一个session,就可以取得随机验证码.
  别以为这样就成功了,还存在一个巨大的陷阱。虽然我们从A平台将session值传递到了B平台,发现在Baction中,添加的  新的session属性(如:用户信息),在Baction之后,B平台其他的页面,居然取不到。这是为何??难道还需要继续传递sessionId不成?的确如此,在以后的页面我们还需要继续传递sessionId。。。。如此下去,系统将混乱不堪。所以我们不能让sessionId这样牵制着我们,我们要消灭它。不错,在Baction之前,我们不得不使用同一个session,但到了B平台操作后,我们将和他断绝关系,这样我们才能自由。在我们进入Baction后将我们需要的session中的值取出,然后销毁它,再创建一个新的session。

request.getSession().invalidate();
HttpSession newSession = request.getSession(true);

 我们将需要的值,设置到newSession中即可。


cookie取不到的问题:

只针对ie6才出现这个问题。在你要放置cookie(我们这里使用的是JavaScript的方式放置ssotocken的)的jsp页面上添加一个段代码

<%response.setHeader("P3P","CP=CAO PSA OUR");%>

 即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值