`
三问飞絮
  • 浏览: 320584 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

关于Session互串的随笔

    博客分类:
  • Java
 
阅读更多

场景:

      一、在同一款浏览器上,先后访问同一个网站,用不同帐号登录。最后一次登录覆盖前一次登录。

      说明:这个比较容易理解。从IE7开始,各款浏览器都统一规则:不同Tab页的窗口共享一个session。

                之所以会出现上述的情况,一般是出现在one page one application的应用。

 

     二,同一个应用服务器,即同一个IP上,部署两个应用。

     说明:以Tomcat为例,其他中间件类似。

               出现的原因是,两个应用的sessionID一致,而默认sessionID是采用httpOnly的cookie保存,且没有设置domain、path。所以两个相同的host应用,对于浏览器来讲,cookie是共享的,进而sessionID也是共享的。所以会互串。

             解决方法:修改cookie的path或者domain范围。

             在Tomcat 6 ,设置server.xml的Connector节点的emptySessionPath=false。

       在Tomcat 7,emptySessionPath无效。通过Context.xml的Context节点。设置

sessionCookieDomain

The domain to be used for all session cookies created for this context. If set, this overrides any domain set by the web application. If not set, the value specified by the web application, if any, will be used.

sessionCookiePath

The path to be used for all session cookies created for this context. If set, this overrides any path set by the web application. If not set, the value specified by the web application will be used, or the context path used if the web application does not explicitly set one. To configure all web application to use an empty path (this can be useful for portlet specification implementations) set this attribute to / in the global CATALINA_BASE/conf/context.xml file.

Note: Once one web application using sessionCookiePath="/" obtains a session, all subsequent sessions for any other web application in the same host also configured with sessionCookiePath="/"will always use the same session ID. This holds even if the session is invalidated and a new one created. This makes session fixation protection more difficult and requires custom, Tomcat specific code to change the session ID shared by the multiple applications.

参考:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

 

              解决方法二,修改sessionID的cookie--name。这个方法在Tomcat6及以下版本,貌似不能设置。

             如果是Tomcat 7以上产品通过设置Context.xml的Context节点。

            

sessionCookieName

The name to be used for all session cookies created for this context. If set, this overrides any name set by the web application. If not set, the value specified by the web application, if any, will be used, or the name JSESSIONID if the web application does not explicitly set one.

             参考:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

 

           注:如果两个应用刚好部署在一个Host上,Port不同,ContextPath也一样,那么方法一是不能解决问题的,只能通过设置SessioinCookieName来解决了。

         

分享到:
评论

相关推荐

    servlet中关于session的理解

    ### 关于Servlet中的Session理解 在Web开发领域中,Servlet技术是Java Web开发的重要组成部分,而Session机制则是处理用户会话的关键技术之一。本文将基于提供的文件内容,深入探讨Servlet中Session的工作原理、...

    Java关于session的详细解释

    ### Java关于Session的详细解释 #### 一、Session的基本概念 在Java Web开发中,Session是一种常用的技术,用于跟踪用户的会话状态。简单来说,Session就是服务器为特定用户分配的一块内存区域,用来存储该用户在...

    .net 和IIS7.5关于Session超时的设置

    .NET 和 IIS7.5 关于 Session 超时的设置是一个重要的议题,尤其是在构建Web应用程序时,确保用户会话的正确管理和安全至关重要。Session是ASP.NET中的一个关键概念,它用于存储用户在网站上浏览期间的状态信息。当...

    ASP完整购物车演示程序(session保存字符串,split分离到数组)

    例如,如果用户选择了商品1、2和3,我们可以创建一个如"1,2,3"的字符串,然后用Session("Cart")来保存这个字符串。这样做的好处是节省内存,因为对于小规模的购物车,一个字符串就足以存储所有信息。 3. **Split...

    关于session丢失问题

    在IT行业中,Session是Web应用程序中用于保持用户状态的关键机制。当用户登录网站后,服务器会为该用户创建一个唯一的Session ID,并将其存储在服务器端,通常是在内存中。然后,这个Session ID会通过Cookie或者URL...

    关于session.doc

    ### 关于Session机制详解 #### 一、术语Session 在计算机科学领域,特别是Web开发中,“session”这个词的含义较为复杂且多变。通常我们提到的“session”是指客户端与服务器之间的一次交互过程,这一过程可以持续...

    IE8串session的解决方法

    标题中的"IE8串session"问题是指在使用Internet Explorer 8(简称IE8)时,浏览器的不同窗口或标签页之间可能会共享同一个Session,导致用户在不同网页上的登录状态、个性化设置等信息相互影响,这在多用户环境或者...

    关于session的详细解释.pdf

    关于Session的详细解释 在深入探讨Session机制之前,我们首先明确Session的概念及其在网络通信和Web开发中的作用。Session,常被译作“会话”,原意指一系列有始有终的动作或消息交换过程,例如打电话从拨号到挂断...

    session session session szsessdifn

    【session session session szsessdifn】 在Web开发中,Session是一个至关重要的概念,尤其是在ASP.NET框架下。Session机制是服务器端存储用户特定信息的一种方式,它允许开发者在多个页面之间保持用户状态,解决了...

    一个关于Session的小demo

    本小demo以JSP为基础,旨在帮助初学者理解并掌握Session的使用方法。 首先,我们来解释一下什么是Session。Session是服务器端存储的一个数据结构,用于保存用户特定的信息,比如用户的登录状态、购物车内容等。当...

    浏览器多窗口共用session引发的混乱

    在IT行业中,浏览器的Session管理是一个非常重要的概念,特别是在Web应用程序的设计和开发中。"浏览器多窗口共用session引发的混乱"这个标题揭示了一个常见但往往被忽视的问题,即当用户在同一浏览器的不同窗口或...

    关于session与cookie的原理简述

    【Session与Cookie原理简述】 Session和Cookie是两种在Web开发中常见的用户状态管理机制,它们主要用于在HTTP协议无状态的特性下跟踪用户状态。理解它们的原理对于编写高效的Web应用至关重要。 **Cookie原理** ...

    session驱动类 session存入数据库

    session驱动类 session存入数据库 数据库存储session 用于session存入数据库

    自己实现的spring-session

    如果没有sessionId就新创建session,如果有sessionId,就去redis中查看是否有此id的记录,如果没有就新建session,如果有,还是新建session,并把redis中此session的相关数据赋值给新建的session,最后保存sessionId...

    关于SESSION的好文章

    【标题】:深入理解Web开发中的Session机制 【描述】:本文将详尽解析Web开发中的Session机制,从基本概念到实际应用,帮助读者全面掌握Session在维持客户端与服务器状态中的重要作用。 【标签】:Session,HTTP...

    spring session redis分布式session

    Spring Session通过与Redis的集成,将Session数据序列化后存储到Redis中,每次请求时从Redis读取Session数据,确保了多服务器间的Session一致性。 **3. 集成Spring Session与Redis** 首先,你需要在项目中添加...

    关于如何清空session的例子

    在Web开发中,Session是一种非常重要的技术,用于在服务器端存储用户会话信息,以便在用户与服务器交互过程中保持状态。当用户登录后,服务器通常会创建一个Session对象,并将用户的标识(如用户名)存储在其中,...

    SpringSession+Redis实现Session共享案例

    - 使用Redis作为Session存储的好处包括:高速读写性能、持久化能力、支持多种数据结构(如字符串、哈希、集合等)以及丰富的操作命令。 3. **配置SpringSession与Redis**: - 首先,在项目中引入SpringSession和...

    js操作session例子

    在Web开发中,Session是一种非常重要的机制,用于在用户的整个会话期间保持数据。JavaScript(JS)作为客户端脚本语言,通常与HTML和CSS一起工作,处理用户交互和动态更新页面内容。然而,由于安全性和同源策略的...

Global site tag (gtag.js) - Google Analytics