我们的产品里有一配置服务(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引起系统不断要求重新登录问题分析的更多相关文章

  1. 电商系统中的商品模型的分析与设计—续

    前言     在<电商系统中的商品模型的分析与设计>中,对电商系统商品模型有一个粗浅的描述,后来有博友对货品和商品的区别以及属性有一些疑问.我也对此做一些研究,再次简单的对商品模型做一个介 ...

  2. Android Cookie共享到WebView避免再次登录(保持登录状态)

    最近在做项目时用到了webview打开指定链接的网页,可已经把webview设置了cookie但始终跳转到登录页面,这明显是cookie没有设置成功导致webview没有将设置好的cookie发送出去 ...

  3. Linux系统文本命令快速登录与退出

    Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统.用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统.在系统安装 ...

  4. linux系统如何限制远程登录ip

    在Linux系统上限制远程登录的IP,使用系统自带的配置文件. /etc/hosts.allow /etc/hosts.deny 匹配原则  先allow 后deny. 要求: 只允许 192.168 ...

  5. 在Linux系统上限制远程登录的IP

    在Linux系统上限制远程登录的IP,使用系统自带的配置文件. /etc/hosts.allow /etc/hosts.deny 匹配原则  先allow 后deny.

  6. 验证码的设计与记住我存储用户名密码cookie的技术及单选按钮选择登录人身份的实现

    login.jsp页面 <head> <script type="text/javascript" src="js/captcha.js"&g ...

  7. JSP(4)—Cookie创建及简单案例(自动登录)

    Cookie的创建: 创建一个JSP页面,第一次访问时显示没有Cookie,正在创建,再次访问就会自动显示cookie的名称,并设置cookie过期时间 <% //在javaweb规范中使用Co ...

  8. openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录

    openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主 ...

  9. Y460 安装ubuntu 12.04系统黑屏,登录界面黑屏

    ubuntu 12.04系统黑屏,登录界面黑屏,但是命令行界面可以登录,也可以正常使用,当时在装CVS,装完重启就这样了,可能是因为前一天装更新时,突然断电导致图形界面损坏,参考他人方法,终于修复,总 ...

随机推荐

  1. (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)

    django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }}   #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...

  2. (8)Python连接操作MySQL

    pymysql模块下的方法 '''必须实例化对象才能建立连接''' 1.pymysql.connect  #和MySQL建立连接 '''得由对象去调用定义游标''' 2.xxx.sursor()  # ...

  3. Kubernetes学习

    DNS for Services and Pods Services 创建基本的Service kind: Service spec.clusterIP: 为一组相同的服务的Pod集群提供一个虚拟ip ...

  4. 深入学习Motan系列(一)——入门及知识zookeeper储备

    背景以及说明: 最近逮到个RPC框架,打算深入学习,框架千千万,只有懂得内部原理,才能应对复杂的业务,进行自定义化系统. 这个系列的Motan文章也是自己慢慢摸索的轨迹,将这个过程记录下来,一是提升自 ...

  5. 【liunx】时间处理函数

    一.脚本示例 [mylinuxaccount@linux01 ~]$ date +%Y%m%d 20171224 [mylinuxaccount@linux01 ~]$ date +%F 2017-1 ...

  6. idea新建工程项目结构

    一:新建项目 File--->new---->project--->Empt Project(空项目)--->next--->java_web--->Finish ...

  7. MySQL Innodb Engine --独立表空间参数(innodb_file_per_table)

    MySQL中参数innodb_file_per_table决定将表存放于ibdata*的共享表空间还是独立的.ibd文件的独立表空间. ================================ ...

  8. JSON字符串转C#实体Class类

    在项目开发过程中,经常需要和不同部门或者不同的组员一起协同工作,但对方写的json返回的结果集,我们需要用,那么如何来生成对应的类代码和实体对象呢?于是参考了网上的做法,做一个简单的字符串转实体类的功 ...

  9. REPL

    REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应. ...

  10. HappytimeOnvif Client V8.3的使用

    1.system-->system settings-->勾选RTP RTSP 2.start video poll