一、摘要

        本文讨论了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. win10 solidity开发环境搭建

    1. 软件安装 1) 安装nodejs 安装完成后将node.exe所在路径加入环境变量PATH中,以便在cmd命令行中直接使用node和npm命令 下面的操作在git bash下进行 2) 安装so ...

  2. Ubuntu16.04 apt源更新

    更新源 安装好系统后,先更新源,方便后面能比较快地下载各种软件包. 备份/etc/apt/sources.list,然后将内容全部替代为: # deb cdrom:[Ubuntu 16.04 LTS ...

  3. 基于ssd的手势识别模型(object detection api方式)

    [Tensorflow]Object Detection API-训练自己的手势识别模型 1. 安装tensorflow以及下载object detection api 1.安装tensorflow: ...

  4. Windows 2012 安装 SQL Server 2012,.Net Framework 3.5安装不成的解决办法

    This behavior can also be caused by a system administrator who configures the computer to use Window ...

  5. Redis简单入门

    什么是Reids 就是一个数据库,将数据保存在内存中 优点 支持数据持久化 支持丰富的数据类型 (字符串,哈希,列表,集合) 和Me的区别:Me是简单版的Redis,Me不支持持久化.Me仅仅支持字符 ...

  6. jenkins自动构建站点

    jenkins构建iis主要内容, 安装过程百度很多,就不多介绍 看图是主要内容 msbuid功能 1.执行vs的编译过程 2.编译好的文件发布到具体的路径下 批处理功能 1.创建站点 2.创建对应的 ...

  7. Layout-3相关代码:3列布局代码演化三]

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 最简单打开三星s8+usb调试模式的步骤

    就在我们使用安卓手机通过数据线链接到PC的时候,如果手机没有开启usb开发者调试模式,PC则没能够成功读到我们的手机,部分app也没能够正常使用,遇到这个情况我们需要找解决方法将手机的usb开发者调试 ...

  9. this 的指向

    使用 JavaScript 开发的时候,很多开发者多多少少会被 this 的指向搞蒙圈,但是实际上,关于 this 的指向,记住最核心的一句话:哪个对象调用函数,函数里面的this指向哪个对象. 下面 ...

  10. 显示开机信息-dmesg

    显示开机信息-dmesg kernel会将开机信息存储在ring buffer中.您若是开机时来不及查看信息,可利用dmesg来查看.开机信息亦保存在/var/log目录中,名称为dmesg的文件里. ...