相同域名下的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");

原文地址:https://www.cnblogs.com/zhouyun-yx/p/10900198.html

时间: 2024-11-03 00:25:27

相同域名下的cookie污染的相关文章

辛星整理域名下的cookie问题

对于非顶级域名,比如二级域名或者三级域名,设置的cookie的domain只能为顶级域名或者二级域名或者三级域名,不能设置成其他的二级域名,否则cookie无法生成. 对于顶级域名,它的cookie的domain只能设置为顶级域名,不能设置为二级域名或者三级域名,否则cookie无法生成.比如www.xinxingjiaocheng.com能够设置cookie的domain为xinxingjiaocheng.com或者www.xinxingjiaocheng.com,但是不能设置为apps.xi

在IIS上新发布的网站,样式与js资源文件加载不到(资源文件和网页同一个域名下)

在IIS上新发布的网站,网站能打开,但样式与js资源文件加载不到(资源文件和网页是同一个域名下,例如:网页www.xxx.com/index.aspx,图片www.xxx.com/pic.png). 然后单独打开资源文件(例如打开图片的链接)是,报错: 这个问题应该是web.config配置文件的设置问题. 在配置文件的<httpHandlers>下的节点,对应的资源文件的type值设置可能是“System.Web.DefaultHttpHandler”值(默认),例如: <httpHa

浅析单点登录,以及不同二级域名下的SSO实现

一家公司有多个产品线,就可能要有多个子域名,下头以xxx域名为例,a.xxx.com, b.xxx.com.com 是顶级域名,xxx 就是一个二级域名,a和b就是子域名. 当用户在a产品线上登录了系统,此时切换到b产品,为了增加用户体验,不必再让用户登录一次b.所以单点登录就出来了. 一般的实现就是增加一个passport.xxx.com,专门搞登录的中控服务. 当用户第一次登录xxx域下,比如a产品.此时先跳转到passport下进行登录,登录成功以后,在passport的session服务

ajax 跨域无法携带cookie 解决办法

ajax 跨域无法携带cookie,需要用到session,终于完美结局 xhrFields: { withCredentials: true }, 添加这个可能是大家都会做的一件事 但是添加上了之后就出现了另外一个问题 The 'Access-Control-Allow-Origin' header contains the invalid value 'Origin'. Origin ...... 2.服务器server端要配置Access-Control-Allow-Credentials

聊一下,前后分离后带来的跨域访问和cookie问题

在谈前后分离前,我们先看看什么是前后一体的.当我们用javaweb开发网站时,最终我们渲染的jsp或者springthymeleaf.我们的页面其实是WEB-INFO或者templates下.当用户请求我们的xxx页面资源其实并不是请求的真正的页面,而是经过我们controller处理完,产生modelAndView后,在找到视图解析器,最终把数据放到视图中,然后response才把视图通过流传输给客户端.在这种开发环境中,我们请求的页面实际是在web容器中的,自然是本域访问. 如果我们将htm

【原】fetch跨域请求附带cookie(credentials)

HTTP访问控制 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS 解决跨域的方式有很多种,本文介绍"跨域请求附带发送cookie" 一.测试环境 前提:后台使用apache+php实现.apache设置多个虚拟主机,设置方式参考:http://www.cnblogs.com/sivkun/p/7347978.html 在http://a.sivkun.com域中/cors-cookie/目录下有

使用 P3P 规范让 IE 跨域接受第三方 cookie

前两天帮同事处理一个 js 跨域问题,使用 jsonp 跨域提交用户名密码请求,实现自动登录第三方网站,即 SSO(single-sign-on) 单点登录,一处登录处处登录.在 Chrome 下没问题,IE 却不行.查看 HTTP 的几个来回,发现登录请求是成功的,问题出在第三方网站返回的 cookie (session id) IE 并没有接受,下一次发送请求时根本没有带上 cookie,说明之前的 Set-Cookie 指令没有效果,所以怎么也登录不了.查了一下,有人使用 iframe 内

关于jsonp跨域过程中 cookie中的值一直为null的原因

今天技术交流群里的小伙伴一直被一个问题而困扰,就是写入cookie里面的值 再次进行请求时 cookie 就为空了 他被问题纠结了一天  我也好奇了一天 终于在快下班的时候 他解决掉了 下面我来收一个渔翁之利 上图啦: 这个是他ajax请求的跨域 这是在ashx一般处理程序中写的读写cookie的操作 这就是问题所在 ,代码没有问题  但是cookie里第二次就是获取不到了捏 最后他给出的解决方案就是 在ashx刚开始的时候 加上 context.Response.AddHeader("P3P&

Asp.Net StateServer实现共同域名下Session共享

概述 在实验的时候,参照了多方的信息,确实成功了,这里简单记录一下. 我们知道,在Asp.Net的Web.Config文件中,System.Web节点下,有个sessionState节点,它说明了应用程序的Session处理方式,它有如下几个选项: MSDN对其分别作简单的解释: (MSDN地址:https://msdn.microsoft.com/zh-cn/library/h6bb9cz9(VS.80).aspx) 值 说明 Custom 会话状态将使用自定义数据存储区来存储会话状态信息.