weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet跨域访问导致session丢失问题的解决(转)...

原文:http://ribbonchen.blog.163.com/blog/static/1183165052011074500877/

=====================================================================
之前配置了weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet进行代理转发,实际部署发现代理服务器把第一次请求转发后,服务器端的session丢失,第二次转发请求时重新开始了新的session,导致用户登出无法继续进行操作。

参照了网上的一些资料,开始时我认为是http header中p3p设置的问题,具体参见 http://www.neatstudio.com/show-1390-1.shtml
鼓捣后发现不行,于是另找出路。
重新温习了一遍cookie和session的相关基础知识,原来session在服务器端生成后分配的sessionID在客户端的保存方式是个cookie,它的生命周期在浏览器关闭后就会结束,而这个cookie的名字如果不特别设置,weblogic会以默认的名称“JSESSIONID”来设置这个cookie的名称,我两个应用的的session cookie名字都没有设置,客户端在第一次通过应用A请求代理转发到应用B时,应用B返回的同名session cookie覆盖了客户端原本的应用A的session cookie,所以导致了应用A session的丢失。
解决方法是,在应用B的weblogic.xml中的session descriptor标记中添加session cookie的名称设置,使其区别于A应用的session cookie名称,如:
<?xml version="1.0"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <session-descriptor>
    <cookie-name>MYSESSION</cookie-name>
  </session-descriptor>
</weblogic-web-app>
 回过头来看,发现之前鼓捣的http header p3p其实是在已经设好了session cookie的名称的前提下,解决在iframe中进行跨域访问时session丢失的问题。
另外,还有一些资料是说可以设置weblogic的session复制,如在weblogic.xml中:
<session-descriptor>
  <session-param>
    <param-name>PersistentStoreType</param-name>
    <param-value>replicated</param-value>
  </session-param>
</session-descriptor>
 其实这是在weblogic集群环境中才能起作用,对代理插件weblogic.servlet.proxy.HttpProxyServlet不起作用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值