一、摘要

        本文讨论了web服务器靠session id识别客户端。以及透过原理分析session冲突的原因,发现session冲突的原因是保存session id信息的cookie发生了冲突。
        以下说到的Session特指Web应用下的Session会话。

二、Session原理

1、什么是Session

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

2、Session实现原理

        Web服务器对浏览器的识别是建立在Cookie上面的,Session由服务端生成,其token(也就是session id)会保存在浏览器上。具体的客户端识别流程如下:
 (图1:Web服务器识别浏览器流程)
        当用户使用浏览器访问web服务时,web服务会查找内存中是否有对应的session对象,如果有,则通过session id可以找到,如果没有,则web服务会为浏览器创建一个session对象,并生成session id。session id会返回到浏览器上使用cookie保存起来,浏览器下次请求的时候把该cookie带上则可以被web服务识别了。

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

1、Session冲突出现原因

        在浏览器中,cookie的保存是以域名进行划分的,如:
        domain a:
               token1=xx;
               token2=xx;
        doamin b:
               token1=xx;
               token2=xx;
        因此,如果存在两个web应用使用同一个域名,不同端口进行访问,刚好cookie的Key值也相同,其cookie就会出现冲突,如果这个cookie保存的是session信息,则session就会出现冲突。

2、Session冲突如何解决

        从前面的分析可以看出,要避免session冲突,关键是避免cookie冲突,如果一定要使用相同的域名,则可以重新定义存储session id信息的cookie的key值。
        在tomcat中,可以在配置文件中修改Context标签,添加cookieSessionName属性,即<Context cookieSessionName=”xx”>,则可以重新定义该应用session对应的cookie key值。
        如果使用其它的web server,也可以自行搜索相关的配置修改方法,总之关键在于避免cookie冲突。

四、总结

        整篇文章的讨论是围绕着保存session id信息的cookie展开的,服务器只要能够识别session id则能够找到对应的session。session冲突的根源在于浏览器保存的cookie的冲突,要解决session冲突的思路是重新定义cookie的key值,避免cookie冲突。
 

HttpSession原理及Session冲突的更多相关文章

  1. 同IP不同端口Session冲突问题

    同IP不同端口Session冲突问题 分类: tomcat2013-09-24 11:19 1146人阅读 评论(0) 收藏 举报 一个服务器上搭建了多个tomcat或者weblogic,端口不一样, ...

  2. Java WebSocket HttpSession与WebSocket Session的关联

    当HttpSession中止(通过显示地失效或超时)时,Web容器会把HttpSession属性从HttpSession中清除. javax.servlet.http.HttpSessionBindi ...

  3. PHP 解决同一个IP不同端口号session冲突的问题

    在项目的开发阶段,我们经常会遇到几个站点共用同一个IP用不同端口号区分的形式!但是,这样很容易导致一个问题,session冲突丢失!即两个站点具有相同的session变量,清除session的时候即全 ...

  4. php中session同ip不同端口的多个网站session冲突的解决办法

    在局域网内使用IP加端口的访问方式搭了两个相同程序的站,结果发现用户在一个站下登录后,在另一个站也同时登录了,在一个退出后,另一个站也同时退出了.看了下程序发现两个站都是使用纯session方式记录登 ...

  5. Weblogic跨域session冲突解决办法

    一.现象: 在WebLogic中,有两个不同域A(端口:9000)和B(端口:8000),应用CA在域A中,应用CB在域B中,进行如下操作: 1.先登录应用CA,再登录应用CB,然后,切换回应用CA, ...

  6. 使用nginx+dnsmasq解决同IP不同端口Session冲突问题

    由于一台服务器上需要部署多个项目,而我们的WEB项目因为用到框架都是一样的,导致同时运行,session相互冲突,这个登录后,那个就得重新登录,造成了使用不方便,原因是IP相同认为是同一个域,接收了B ...

  7. HttpSession and Hibernate session

    一.javax.servlet.http.HttpSession是一个抽象接口   它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是 ...

  8. 同一台服务器部署多个WEB应用,SESSION冲突的解决方法

    由于一台服务器上使用Tomcat部署多个WEB项目,而项目因为用到框架都是一样的,导致同时运行,session相互冲突,这个登录后,那个就得重新登录,造成了使用不方便,解决办法如下: 在server. ...

  9. session的工作原理与session用法

    一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...

随机推荐

  1. WIN10X64_LTSB2016极限精简版by双心

    WIN10X64LTSB2016极限精简版by双心http://www.cnblogs.com/liuzhaoyzz/p/9162113.html 一.前言:关于极限精简版的说明 本系统为极限精简版, ...

  2. 和2018年年初做管理系统的不同(vuex)

    从2017年底开始做公司批改后台系统(服务内部人员对熊猫小课用户的作业进行批改.对批改员工资结算等)到教务系统(服务于内部人员对熊猫小课等移动端产品的内容进行配置等).ai-boss系统(服务于内部人 ...

  3. CDNI - RFC 6707 翻译

    CDNI的相关问题陈述 概述 CDN对可缓存内容提供了许多好处:降低交付成本,提高终端用户体验,提高交付的鲁棒性.对于这些因素,CDN常 用于大规模的内容交付.因此,现有的CDN提供商正在扩大规模,许 ...

  4. Linux配置虚拟内存

    我的Linux内存很少,所以我给它弄个虚拟内存 首先建立一个1G的空文件: dd if=/dev/zero of=/home/swapfile bs=64M count=16 格式化为swap: mk ...

  5. Ajax2简单的使用方式

    http://www.cnblogs.com/Ming8006/p/6142191.html

  6. 关于getClass()的一些自己的见解

    通过观看视频讲解,我得知,Class 老师讲解的是 这个是类的类,即是管理类的类.当时不是很理解,随后查询了相关资料后,以及真切的运行了几行代码后,才有一些深层次的体会, 在这里想要跟大家分享一下.如 ...

  7. flutter 底部按钮切换页面

    界面如图: 我们就从上节里面的app.dartt修改 目录:lib lib/story 其它两个目录一样. 图片配置一下 app.dart import 'package:flutter/materi ...

  8. Unsupported major.minor version 52.0报错解决方案

    参考了https://blog.csdn.net/zixiao217/article/details/52818658 但我换了JDK版本为1.8后,启动还是报错,经过排查发现,是tomcat配置出问 ...

  9. bootstrap的使用集锦

    在使用div样式的时候可以根据页面布局来调整大小 <div class="col-md-8 col-md-offset-3"># col-md-8 div所占的空间大小 ...

  10. PostgreSQL函数(存储过程)----笔记

    PostgreSQL 函数也称为 PostgreSQL 存储过程. PostgreSQL 函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语句(声明,分配,循环,控制流程 ...