一次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,装完重启就这样了,可能是因为前一天装更新时,突然断电导致图形界面损坏,参考他人方法,终于修复,总 ...
随机推荐
- (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)
django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }} #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...
- (8)Python连接操作MySQL
pymysql模块下的方法 '''必须实例化对象才能建立连接''' 1.pymysql.connect #和MySQL建立连接 '''得由对象去调用定义游标''' 2.xxx.sursor() # ...
- Kubernetes学习
DNS for Services and Pods Services 创建基本的Service kind: Service spec.clusterIP: 为一组相同的服务的Pod集群提供一个虚拟ip ...
- 深入学习Motan系列(一)——入门及知识zookeeper储备
背景以及说明: 最近逮到个RPC框架,打算深入学习,框架千千万,只有懂得内部原理,才能应对复杂的业务,进行自定义化系统. 这个系列的Motan文章也是自己慢慢摸索的轨迹,将这个过程记录下来,一是提升自 ...
- 【liunx】时间处理函数
一.脚本示例 [mylinuxaccount@linux01 ~]$ date +%Y%m%d 20171224 [mylinuxaccount@linux01 ~]$ date +%F 2017-1 ...
- idea新建工程项目结构
一:新建项目 File--->new---->project--->Empt Project(空项目)--->next--->java_web--->Finish ...
- MySQL Innodb Engine --独立表空间参数(innodb_file_per_table)
MySQL中参数innodb_file_per_table决定将表存放于ibdata*的共享表空间还是独立的.ibd文件的独立表空间. ================================ ...
- JSON字符串转C#实体Class类
在项目开发过程中,经常需要和不同部门或者不同的组员一起协同工作,但对方写的json返回的结果集,我们需要用,那么如何来生成对应的类代码和实体对象呢?于是参考了网上的做法,做一个简单的字符串转实体类的功 ...
- REPL
REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应. ...
- HappytimeOnvif Client V8.3的使用
1.system-->system settings-->勾选RTP RTSP 2.start video poll