一、现象:

在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-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冲突的问题。

四、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冲突解决办法相关推荐

  1. JavaScript跨域总结与解决办法

    JavaScript跨域总结与解决办法 什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window ...

  2. js的跨域问题和解决办法

    js的跨域问题和解决办法 参考文章: (1)js的跨域问题和解决办法 (2)https://www.cnblogs.com/jsrou/p/9896451.html 备忘一下.

  3. vue : 本地调试跨域问题的解决办法:proxyTable

    vue : 本地调试跨域问题的解决办法:proxyTable 参考文章: (1)vue : 本地调试跨域问题的解决办法:proxyTable (2)https://www.cnblogs.com/fo ...

  4. Golang http server 跨域问题与解决办法

    跨域,简称CROS,Cross-origin resource sharing.这里不仅仅是golang开发http server时会遇到的问题,它不区分语言,只要是http server都可能遇到这 ...

  5. 前端面试查漏补缺--(三) 跨域及常见解决办法

    前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...

  6. Google谷歌浏览器Post请求预见strict-origin-when-cross-origin跨域问题的 解决办法

    问题概述 关于这个问题,后端接口开发完成,前端功能界面和函数方法体编写完成后,博主在前后端联调的时候遇到的,接口是调用成功了,但是没有返回任何结果, 错误信息:" Referrer Poli ...

  7. JavaScript跨域总结与解决办法(转)

    什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...

  8. axios代理跨域 cli4_跨域本质及解决办法

    1.什么是跨域? 2.如何解决? 跨域是前端所独有的,后端不存在跨域问题.是浏览器的一种安全保护手段,为了防止别人抓取.篡改你的网站数据信息.遵循同源策略.同协议(http).同域名.同端口,少一项不 ...

  9. 关于跨域问题的解决办法

    跨域是指 在不同的域之间进行数据传输,只要协议.域名.端口有任何一个不同,都被当作是不同的域. 解决跨域的方法: 1.JSONP: 利用script的src 可以在不同域之间请求数据的特点,向某一地址 ...

最新文章

  1. python人脸识别项目_基于Python与命令行人脸识别项目(系列二)
  2. Java中的I/O模型总结(八股文自述)
  3. 团购市场分析:赶集网 团购数据处理过程【笔记】
  4. c#将对象序列化为字符串和将字符串反序列化为对象
  5. 推荐 7 个 Github 上近 200k Star 的计算机学习资源,练好前端内功的秘籍!
  6. mysql单表索引个数_MySQL性能:多个表与单个表和分区上的索引
  7. 会话跟踪技术之HttpSession
  8. python高级功能_python高级篇
  9. 阿里资深技术专家崮德:8 个影响我职业生涯的重要技能
  10. 关于mysql出现大量locked进程
  11. python counter 出现次数最少的元素_[PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法...
  12. Android:安卓线性布局(属性)
  13. matlab中用于离散系统求解的命令,MATLAB求解规划问题(线性规划, 整数规划, 非线性规划)...
  14. 统计学习方法读书笔记16-SVM支持向量机
  15. linux 编译程序的四个过程
  16. Asp.net中的页面乱码的问题
  17. 微信小程序授权登录源码
  18. 一文解决 浏览器清除控制台历史记录~
  19. Window.iso镜像文件下载
  20. MySQL Workbench main_menu.xml 文件 可直接粘贴(下)

热门文章

  1. [学习笔记]0/1分数规划
  2. 【MySQL】【高可用】从masterha_master_switch工具简单分析MHA的切换逻辑
  3. java中如果需要返回多个值怎么办
  4. Sql Server系列:键和约束
  5. Spring事务—方法调用事务回滚
  6. java中double类型占几个字节_面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?...
  7. python中如何统计元组中元素的个数_python-无论元素顺序如何,获取列表中的元组数...
  8. 解决Xshell无法连接虚拟机CentOS7问题
  9. RocketMQ如何保证消息不丢失? 如何快速处理积压消息?
  10. 十大经典排序C++实现及动图演示