zoukankan      html  css  js  c++  java
  • HttpSession冲突发生原因及解决

    摘要

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

    一、Session原理

    1、什么是Session

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

    2、Session实现原理

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

    Web服务器识别浏览器流程

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

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

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

    1、Session冲突出现原因

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

    Web服务器识别浏览器流程

    (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,也可以自行搜索相关的配置修改方法,总之打破前面的两个条件之一。

    作者:Emile

    个人主页:http://www.guanjianzhuo.com/

    欢迎访问、评论、留言!

  • 相关阅读:
    段错误诊断!
    kissthank
    c实现面向对象编程(3)
    字符串转换成数字以及注意事项
    【Java并发编程实战】-----“J.U.C”:CLH队列锁
    c编程:僵尸吃大脑
    展示C代码覆盖率的gcovr工具简单介绍及相关命令使用演示样例
    最优化学习笔记(三)最速下降法
    maven学习
    ASP.NET MVC 入门4、Controller与Action
  • 原文地址:https://www.cnblogs.com/guanjianzhuo/p/10926520.html
Copyright © 2011-2022 走看看