zoukankan      html  css  js  c++  java
  • 相同域名下的cookie污染

    • 问题描述

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

    • 原因解析
        通过查询资料大致可以了解到,如果是首次登录,服务器会创建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的别名

        1、通过在contex中设置:

      <Context sessionCookieName="jss" >

        2、或者通过java虚拟机参数

      -Dorg.apache.catalina.SESSION_COOKIE_NAME=jss

        3、或者动过设置:

      System.setProperty("org.apache.catalina.SESSION_COOKIE_NAME", "jss");

       

       

  • 相关阅读:
    地铁项目结对编程
    地铁项目初步计划及简单设计
    构建之法浅读感想
    集美大学1511,1512软件工程课程作业总结
    第二次作业小结
    第二次作业评分可能要 delay 一些
    第一次作业小结
    关于我
    面向对象设计与构造第四单元总结及期终总结
    面向对象设计与构造第三单元作业总结
  • 原文地址:https://www.cnblogs.com/zhouyun-yx/p/10900198.html
Copyright © 2011-2022 走看看