一、摘要

        本文讨论了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. windows旋转屏幕快捷键配置

    1.打开屏幕分辨率 2.高级设置 3.英特尔核心显卡控制板 4.图形属性 5.选项和支持 6.管理快捷键(启用.禁用)

  2. ftp服务器使用-windowsftp服务起搭建

    首先打开控制面板选择程序 点击启动或关闭windows功能 勾选ftp服务器和IIS管理控制台点击确定 然后右键点击我的电脑,点击管理,然后点击本地用户和组,然后右键点击用户,点击新用户,创建一个用户 ...

  3. C语言排序算法学习笔记——交换类排序

    交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们 ...

  4. Flink安装部署

    官网:https://ci.apache.org/projects/flink/flink-docs-release-1.7/ops/deployment/cluster_setup.html cd ...

  5. django rest framework serializer中获取request中user方法

    views.py   serializer = self.get_serializer(data=request.data, context={'request': request}) seriali ...

  6. Android 开发 Camera类的拍照与录像

    前言 在开发Android应用的时候,如果需要调用摄像头拍照或者录像,除了通过Intent调用系统现有相机应用进行拍照录像之外,还可以通过直接调用Camera硬件去去获取摄像头进行拍照录像的操作.本篇 ...

  7. Btrace官方教程-中文版

    教程英文版来源:https://github.com/btraceio/btrace/blob/master/docs/usersguide.html BTrace用户指南 BTrace是一种安全,动 ...

  8. C机器级移位,编码表示 无符号编码表示,有符号编码表示一般最常见的方式是补码

    C机器级移位,编码表示 无符号编码表示,有符号编码表示一般最常见的方式是补码  w位补码所能表示的值范围是 首先我们得心知 补码的最高有效位是符号位,当符号位位1是表示的是负值,当符号位是0是,表示的 ...

  9. arcgis10.2 sde配置

    本机配置好oracle11g server 64位+client 32位.

  10. python configparse模块&xml模块

    configparse模块 用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser. [DEFAULT] serveraliveinterval = ...