同一服务器 应用的session冲突 -凯发k8网页登录

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

同一服务器 应用的session冲突

posted on 2016-05-06 12:33 xcp 阅读(1679) 评论(0)  编辑  收藏 所属分类: 杂乱无章

使用apache反向代理解决在应用a使用iframe嵌入应用b的功能而产生的跨域问题后,应用b的功能能正常使用了。但也产生了另外一个问题:打开应用a的任何页面都会跳转凯发k8网页登录主页,问题原因是:session丢失。

具体分析:

session是通过在客户端生成一个cookie,所有请求会带上这个cookie。一个cookie的name、domain和path属性值均相同,则会覆盖,若未设置domain域,则域为ip(不包括端口),因此应用a的session被应用b的session覆盖了。


 

经测试:tomcat、weblogic、websphere的session默认都是jsessionid 为key来识别的,因此在没有特别设置下,同一个域下的多个应用session会互相覆盖。 

解决办法:

设置各个应用使用不同的cookie-name,或者将jsessionid的path路径设置为不同。

1)weblogic的cookie相关配置:weblogic.xml

 

属性名

默认值
cookie-name jsessionid 如未设置,默认为“jsessionid”
cookie-path null 如未设置,默认为“/”
cookie-domain null 如未设置,默认为发放cookie的服务器的域

 

示例代码:  
1.  <session-descriptor2.  <session-param3.  <param-name>cookiename</param-name4.  <param-value>hadfcookie</param-value5.  </session-param6.  </session-descriptor>

 
延伸阅读:1.    
          2. weblogic如何设置session超时时间  
 
 

2)websphere的设置(设置不同jsessionid的path)

应用程序->企业应用程序-> [application server] ->
会话管理->1.覆盖会话管理(需打钩).
会话管理->2.启用 cookie(需打钩)->修改'cookie路径' 

 

3)tomcat的设置(设置不同jsessionid的path)

修改tomcat/conf/server.xml: 

 

1.tomcat5修改方法

在启动项中增加org.apache.catalina.session_cookie_name参数

linux
java_opts=’-dorg.apache.catalina.session_cookie_name=yousessionname‘

win
set java_opts=”-dorg.apache.catalina.session_cookie_name=yousessionname“

2.tomcat6和tomcat7修改方法相同

在context容器标签上增加sessioncookiename参数

还可以加上sessioncookiepath

...

延伸阅读:tomcat修改jsessionid在cookie中的名称 




名称: ♪4c.esl | .↗evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail:


网站地图