Weblogic跨域session冲突解决办法
来源:互联网 发布:弱矩阵型 项目经理 编辑:程序博客网 时间:2024/06/04 19:32
一、现象:
在WebLogic中,有两个不同域A(端口:9000)和B(端口:8000),应用CA在域A中,应用CB在域B中,进行如下操作:
1、先登录应用CA,再登录应用CB,然后,切换回应用CA,发现应用CA的Session丢失;
2、应用CA中有指向应用CB的链接,登录应用CA,点击指向应用CB的链接,应用CA的Session丢失;
二、原因:
因Cookie冲突导致Session丢失。
Cookie的覆盖机制:
如果一个新的cookie与一个已存在的cookie的NAME、Domain和Path属性值均相同,则旧的cookie会被丢弃。(参考:http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_cookies)
WebLogic的Cookie相关配置:
属性名
默认值值cookie-nameJSESSIONID如未设置,默认为“JSESSIONID”cookie-pathNULL如未设置,默认为“/”cookie-domainNULL如未设置,默认为发放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冲突的问题。
四、WebLogic修改JSESSION方法(如修改为JSESSIONID1):
<?xml version="1.0" encoding="utf-8" ?><!--<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">--><!--<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">--><wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/weblogic-web-app" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"><!--<weblogic-web-app>--><wls:description>pis</wls:description> <wls:session-descriptor> <wls:timeout-secs>7200</wls:timeout-secs> <wls:cookie-name>JSESSIONID1</wls:cookie-name> <wls:encode-session-id-in-query-params>true</wls:encode-session-id-in-query-params> </wls:session-descriptor> <wls:context-root>pis</wls:context-root> <wls:container-descriptor> <wls:filter-dispatched-requests-enabled>true</wls:filter-dispatched-requests-enabled> <wls:index-directory-enabled>true</wls:index-directory-enabled> <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes> </wls:container-descriptor></wls:weblogic-web-app>
- Weblogic跨域session冲突解决办法
- Weblogic跨域集成session冲突解决办法
- weblogic中jar包冲突问题的解决办法
- Linux中weblogic中axis.jar的冲突的解决办法
- 【同一个Server Weblogic两个Domain CookieName冲突导致session失效问题】【关于WebLogic的Session丢失的问题】
- DWR Weblogic Session Error 困扰我半天的解决办法
- SESSION冲突
- Weblogic多应用部署在一个域下导致session冲突
- weblogic 8.16 冲突
- weblogic包冲突问题
- weblogic cxf 冲突
- Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法
- Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法
- Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法
- weblogic 12c下使用hadoop时jar包冲突的两个问题的解决办法
- session同ip不同端口的多个网站session冲突的解决办法
- weblogic之SESSION复制
- weblogic 集群session复制
- 超级楼梯
- 第9周项目1-多分段函数的值
- opencv——访问图像元素(imagedata widthstep)
- 手把手教你如何把java代码,打包成jar文件以及转换为exe可执行文件
- 浅析Hadoop文件格式
- Weblogic跨域session冲突解决办法
- 库实现之分配内存对齐的程序aligned_malloc和aligned_free函数
- 用java语言实现万年历(输入年月,打印当前日历,主要使用Java Swing技术)
- shell中的bash,初步了解
- 在java中调用c/c++代码的方法(jni)
- Java研究_Java面试题
- UVA 11538 - Chess Queen
- Struts2学习笔记(四)
- Microsoft 收购 Apiphany