cookie冲突的问题

问题现象:   
    这段时间开发了一个系统(A系统),其中部分页面采用了iframe嵌入了B系统的页面;在QA环境测试的时候,发现A系统操作提交的sessionId会被B系统的sessionId覆盖。

排错过程:
    QA环境,两个系统部署在同一个weblogic的不同domains下面;而在开发环境的时候没有发现问题;开发环境使用的是tomcat6.0;
    使用火狐的fireBug跟踪请求的头信息,发现如果A系统的页面有嵌入B系统的页面,那么在B系统页面展示结束之后,A系统与服务器的交付,提交的sessionId都是B系统的sessionId;

    这个时候,以为cookie是采用IP为key进行保存的,同样的IP地址会把cookie信息重写;

    后来发现在开发环境中不会出现这个问题(两个系统部署在同一个tomcat6服务下)

    之后在使用 firefox 查看QA环境的cookie信息的时候,发现cookie的"路径" = "/" ,但是实际上这两个服务的路径应该都有的 A系统为(“/A”),B系统为(“/B”)

    而后,使用   firefox 查看开发环境的cookie信息的时候,发现cookie的"路径"是正常的。

 

    开发环境与QA环境仅仅是中间件服务器的不同;

 

    这个时候,考虑是否weblogic有配置可以控制cookie的写入信息;

 

    后来通过goole发现了下面的解决方法:

 

WebLogic不同域的Cookie冲突问题

原文url:http://www.devx.me/java/server/weblogic-domain-cookie-conflict.html 

WebLogic的Cookie相关配置:
属性名                默认值                 值
cookie-name    JSESSIONID     如未设置,默认为“JSESSIONID”
cookie-path     NULL                如未设置,默认为“/”
cookie-domain NULL                如未设置,默认为发放cookie的服务器的域


由于没有在Weblogic.xml配置文件中对cookie的相关属性值进行配置,因此应用CA和应用CB的cookie的Name、Domain和Path属性值均为默认值,即Name为JSESSIONID,Path为“/”,Domain为服务器的IP地址,三个属性值均相同,这就造成了应用CA的cookie与应用CB的cookie会互相覆盖,从而导致相应应用的session丢失。

三、解决办法:

在Weblogic.xml配置文件中增加Cookie的相应属性值的配置:

方法1:设置各应用的cookie的Name属性为不同值

方法2:设置各应用的cookie的Path属性为不同值(cookie的Path属性值需与context-root值保持一致,context-root若未在Weblogic.xml中指定则默认为部署的WAR包名或文件夹名,若同一Weblogic服务器不同域中的两应用context-root相同,则此方法不可行)

附注:虽然问题是在WebLogic下的不同域部署应用进行互访的情况下发现的,但是,从问题产生的原因来看,在同一个域中的不同应用的互访,如果未做cookie相关属性值的配置,也会出现cookie冲突的问题。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值