相同域名下的cookie污染

  • 问题描述

   本地用同一个tomcat调试两个相同框架的不一样项目,在同一个浏览器界面里切换时,A项目的登陆会把B项目的登陆给踢掉,翻反过来亦如此。经过查看浏览器cookie,发现两个项目的cookie彻底如出一辙,只是值不一样而已。java

  • 缘由解析
      经过查询资料大体能够了解到,若是是首次登陆,服务器会建立sessionId返回给浏览器,浏览器会将sessionId保存为JSessionId,下次发起访问的时候会把sessionId带上,服务器经过判断是否存在sessionId,若是不存在则跳转登陆页,存在则进行业务操做。因此A项目登陆以后B项目接着去登录,服务器返回给B项目一个新的sessionId,浏览器获取到以后会覆盖掉A项目的,等到A发起下次请求的时候,把覆盖掉的sessionId发送给服务器,服务器检测不到该sessionId,会觉得sessionId已通过期,因此重定向到登陆页。
  • 解决方法
    方法一
      设置不一样域名,能够设置两个项目的域名不一样,也就是区分到不一样服务器上。
      如:http://projectA.com:7777/
        http://projectB.com:8080/
    方法二
      设置不一样的应用名称,不是经过根路径的方式访问(未验证过)
      如:http://ip1:7777/projectA
        http://ip1:8080/projectB
    方法三
      设置cookie的别名

      一、经过在contex中设置:
    apache

    <Context sessionCookieName="jss" >

      二、或者经过java虚拟机参数浏览器

    -Dorg.apache.catalina.SESSION_COOKIE_NAME=jss

      三、或者动过设置:tomcat

    System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "jss");
相关文章
相关标签/搜索