HttpSession冲突发生原因及解决

摘要

Web服务器依赖Session Id识别客户端。Session冲突实际是保存Session Id信息的Cookie信息发生了冲突。

一、Session原理

1、什么是Session

Session是一个服务端会话技术,利用这个技术,服务器能够识别与之通讯的客户端。该客户端与服务端交互过程中,一些信息可以保存在Session中。

2、Session实现原理

Web服务器对浏览器的识别是建立在Cookie上面的,Session由服务端生成,其token(也就是session id)会保存在浏览器上。具体的客户端识别流程如下:


(2-1:Web服务器识别浏览器流程)

当用户使用浏览器访问Web服务时,Web服务会根据Session Id查找内存中是否有对应的Session对象,如果没有Session Id,则web服务会为浏览器创建一个Session对象,并生成Session Id返回到浏览器Cookie保存。浏览器下次请求时再把该Cookie带上则可以被Web服务识别了。

三、Session冲突出现原因及解决

1、Session冲突出现原因

在浏览器中,Cookie的保存是以域名进行划分的,如下:


(1-1:浏览器Cookie存储形式)

如果存在对两个相同域名、不同端口进行访问Web应用且Cookie的Key值刚好相同,则Cookie存储就会出现冲突,如果刚好这个key存储Session ID,则发生了Session冲突。

2、Session冲突的解决办法

从前面分析可以知道,要避免Session冲突,就要打破以下两个条件之一:

  • 相同域名
  • SessionId在Cookie存储相同的Key值

tomcat

在tomcat中,可以在配置文件中修改Context标签,添加cookieSessionName属性,cookieSessionName属性即重新定义SessionId在Cookie存储的Key值。

其它

如果使用其它的web server,也可以自行搜索相关的配置修改方法,总之打破前面的两个条件之一。

原文地址:https://www.cnblogs.com/guanjianzhuo/p/10926520.html

时间: 2024-11-08 22:16:13

HttpSession冲突发生原因及解决的相关文章

依赖冲突的原因以及解决办法

原创 鸭血粉丝 Java极客技术 0x00. 前言 依赖冲突是日常开发中经常碰到的过程,如果运气好,并不会有什么问题.偏偏阿粉有点背,碰到好几次生产问题,排查一整晚,最后发现却是依赖冲突的引起的问题. 没碰到过这个问题同学可能没什么感觉,阿粉举两个最近碰到例子,让大家感受一些. 例子 1: 我们公司有个古老的业务基础包 A.B,C 业务依赖这个包.某个团队拷贝 A 的部分代码进行重构,类名与路径完全一样,然后重新打包成 D 发布. 一次业务改动,B 业务也引入了 D 包,测试环境运行的时候,一切

出现System.web.mvc冲突的原因及解决方法CS0433

1.问题描述 CS0433:类型“System.Web.Mvc.WebViewPage<TModel>”同时存在于URL1和URL2中 2.解决方案 找到Web.config文件中的<System.web><system.web> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="Syst

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖.这里列举一个对同一个资源的争抢造成死锁的实例. Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock(  ID NUMBER, test VARCHAR(100)  ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VAL

mysql数据库死锁的产生原因及解决办法

这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下 数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性.加锁是实现数据库并 发控制的一个非常重要的技术.在实际应用中经常会遇到的与锁相关的异常情况,当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就会出现死锁,严 重影响应用的正常执行. 在数据库中有两种基本的锁类型

coreseek常见错误原因及解决方法

coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用 本文为大家整理了coreseek/sphinx中文检索引擎的常见问题和解决方法,感兴趣的同学参考下. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协

(转)收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决

Hibernate中No row with the given identifier exists问题的原因及解决 产生此问题的原因: 有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique="true">(特殊的多对一映射,实际就是一对一)来关联table2.当hibernate查找的时候,table2里的数据没有与table1相匹配的,这样就会报No row with

js报TypeError $(...) is null错误,jquery失效的原因及解决办法

最近在工作中发现个问题,原本好好的网页,写了一些自己的jquery代 码之后,竟然总是不起作用,无论写的多么简单,都不起作用,似乎jquery失效了一般,在火狐下调试看了下,页面报TypeError $(...) is null这种错误,找了半天原因最后发现竟是页面中加载的一个插件给捣的鬼,是它将jquery的$方法给覆盖了.对于这个问题,现在分享两种解决方法. (1)删冲突插件,jquery作为基础库,当然是没有理由被删了.这个方法最直接了. (2)将jquery的$方法改名,具体改名方法如下

.net安装部署“Error 1001 在初始化安装时发生异常” 的解决方法

状况描述:打包安装后,如果删除安装目录中的某个文件,这时从桌面快捷方式启动软件系统会自动运行修复程序,此时因为路径问题会报出"错误 1001 在初始化安装时发生异常xxx"的异常.(前提是你的安装部署中加入了"自定义操作",并为其传值). 查找原因原来是"自定义操作"中CustomActionData值有误造成.未出错前的CustomActionData. /DbName=[DBNAME] /ServerName=[SERVERNAME] /Us

Nginx 502 Bad Gateway 错误的原因及解决方法

http://my.oschina.net/zhouyuan/blog/118708 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, 把一些原因及解决方法汇总一下,以防生产环境下的502  会有好多种情况出现502错误,下面我们分情况来说一下. 一.fastcgi缓冲区设置过小 出现错误,首先要查找nginx的日志文件,目录为/var/log/nginx,在日志中发现了如下错误. 2013/01/17 13:33:47 [erro