一次cookie引起系统不断要求重新登录问题分析
我们的产品里有一配置服务(tomcat),采用ajax来通信交互
但是最近频频发现登录后马上弹出要重新登录的情况,一开始以为是cookie没有带上导致session找不到,后来问题依旧,查看浏览器cookie,竟然发现我们的配置服务web站点上有3个cookie, 而且path不一样,一个path是/跟路径,另外两个是/conf/ajax1, /conf/ajax2,而且里面的cookie值jsessionid不一样
why?
我们从开始登录复盘一下,刚开始登录后产生/跟的cookie,这点没问题,但是path 的/conf/ajax1,/conf/ajax2 cookie是如何产生的?当我们的session超时过期后,再尝试直接去访问/conf/ajax1/a就产生path为/conf/ajax1的cookie了,但是我们同时也发现/跟的cookie的sessionid也被重置了,why?我们看了看单独访问/conf/ajax1/a接口的时候的response header , 竟然有2个set-cookie
Set-Cookie:JSESSIONID=2C1C994BEAF199EA12DDE5585DA2F6CE;path=/;HttpOnly
Set-Cookie:JSESSIONID=2C1C994BEAF199EA12DDE5585DA2F6CE
第二个Set-Cookie的path就是当前访问url目录的路径/conf/ajax1 tomcat自身会返回一个Set-Cookie:JSESSIONID=2C1C994BEAF199EA12DDE5585DA2F6CE, 但第一个Set-Cookie是如何产生的,翻看我们的代码果然有response.addCookie(cookie),原来是这里导致了多个cookie
我们再用另外一种方式来模拟复盘一下之前的问题,先清空cookie, 直接浏览器访问/conf/ajax1/a 接口,产生 path为/ , /conf/ajax1 两个cookie, 然后删除path 为/ 的cookie, 再浏览器里直接访问 /conf/ajax2/a 接口,又新产生了/和 /conf/ajax2两个cookie,加上之前的/conf/ajax1
一共3个cookie 补充:
如果我们先直接浏览器访问/conf/ajax1/a 接口,产生 path为/ , /conf/ajax1 两个cookie后,又直接访问/conf/ajax2/a 会不会产生/conf/ajax2 的cookie了?答案是不会, 因为访问一个地址的时候,浏览器会查看是否有这个地址所包含的path的cookie,如果有就携带,我们这里访问/conf/ajax2/a
地址包含了/ ,所以跟path的cookie会被携带, 如果我们访问的是/conf/ajax1/xx/b 这个地址,因为包含了/和/conf/ajax1 两个path, 所以这两个cookie都会被携带。
一次cookie引起系统不断要求重新登录问题分析的更多相关文章
- 电商系统中的商品模型的分析与设计—续
前言 在<电商系统中的商品模型的分析与设计>中,对电商系统商品模型有一个粗浅的描述,后来有博友对货品和商品的区别以及属性有一些疑问.我也对此做一些研究,再次简单的对商品模型做一个介 ...
- Android Cookie共享到WebView避免再次登录(保持登录状态)
最近在做项目时用到了webview打开指定链接的网页,可已经把webview设置了cookie但始终跳转到登录页面,这明显是cookie没有设置成功导致webview没有将设置好的cookie发送出去 ...
- Linux系统文本命令快速登录与退出
Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统.用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统.在系统安装 ...
- linux系统如何限制远程登录ip
在Linux系统上限制远程登录的IP,使用系统自带的配置文件. /etc/hosts.allow /etc/hosts.deny 匹配原则 先allow 后deny. 要求: 只允许 192.168 ...
- 在Linux系统上限制远程登录的IP
在Linux系统上限制远程登录的IP,使用系统自带的配置文件. /etc/hosts.allow /etc/hosts.deny 匹配原则 先allow 后deny.
- 验证码的设计与记住我存储用户名密码cookie的技术及单选按钮选择登录人身份的实现
login.jsp页面 <head> <script type="text/javascript" src="js/captcha.js"&g ...
- JSP(4)—Cookie创建及简单案例(自动登录)
Cookie的创建: 创建一个JSP页面,第一次访问时显示没有Cookie,正在创建,再次访问就会自动显示cookie的名称,并设置cookie过期时间 <% //在javaweb规范中使用Co ...
- openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录
openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主 ...
- Y460 安装ubuntu 12.04系统黑屏,登录界面黑屏
ubuntu 12.04系统黑屏,登录界面黑屏,但是命令行界面可以登录,也可以正常使用,当时在装CVS,装完重启就这样了,可能是因为前一天装更新时,突然断电导致图形界面损坏,参考他人方法,终于修复,总 ...
随机推荐
- 《DSP using MATLAB》Problem 6.14
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- Maven命令安装jar包到本地仓库
https://blog.csdn.net/moxiong3212/article/details/78767480 当需要的jar包在中央仓库找不到或者是想把自己生成的jar包放到的Maven仓库中 ...
- 【git】如何向gitHub上推送自己的项目
一.在本地建立项目spring 二.在gitHub上创建spring仓库 三.在本地生成公私钥文件 命令:ssh-keygen -t rsa -C "shangxiaofei3@163.co ...
- gunicorn工作原理
gunicorn工作原理 Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork ...
- 一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)
Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象传入一个包名+类名的字符串就可以得到C ...
- tile38 一款开源的geo 数据库
tile38 是基于golang 编写的geo 数据库,支持地理空间索引.实时地理围栏,同时也支持leader-flower 的部署模型 备注: 下边测试一个简单的地理围栏功能 环境准备 docker ...
- Computer Go Programming 学习
https://senseis.xmp.net/?ComputerGoProgramming https://www.worldscientific.com/doi/pdf/10.1142/S0218 ...
- 解决winfrom下TextBox不支持透明背景色
不知道微软扯什么拉鸡蛋子,居然有控件不支持透明,我实在想喷设计的人脑残.尤其可恨的是TextBox不支持,更可恨的是直到最新版.net4.6也不支持.源码又看不见,具体实现细节都不知道,谁能改得动?这 ...
- 关于宽带接两台路由,并且第二台需要关闭DHCP的设置
关于宽带接两台路由,并且第二台需要关闭DHCP的设置 https://wenku.baidu.com/view/e317a12d4b35eefdc8d333cb?pcf=2#1
- java对文件操作之实用
创建文件 package com.pre; import java.io.File; public class WJ { public static void main(String[] args) ...