java会话技术–03–Session覆盖问题

  • Post author:
  • Post category:java




java会话技术–03–Session覆盖问题




代码位置

https://gitee.com/DanShenGuiZu/learnDemo/tree/master/sessionCookie-learn



1、现象

同一域名,同一个服务,不同的端口,存在session会话覆盖的问题。



2、操作



2.1、核心代码

在这里插入图片描述



2.2、启动服务

启动8081和8082

-Dserver.port=8081
-Dserver.port=8082



2.3、8081 测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



生成的 JSESSIONID
JSESSIONID=D9FA80B010566B773784580F641AEA34



2.4、8082 测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



生成的 JSESSIONID
JSESSIONID=2A7D4B716D12E98B3BB8585231AF1823

可以看到 和 8081是不一样的。



2.5、8081 测试



2.5.1、查看 JSESSIONID

在这里插入图片描述



2.5.2、获取会话数据测试

在这里插入图片描述



3、原因

因cookie冲突导致session丢失,因为8081和8082使用SESSION会话的名称都是JSESSIONID。



3.1、cookie覆盖机制

在这里插入图片描述

一个新的cookie与一个已存在的cookie比较

  1. 只有 NAME、Domain和Path 属性值均相同,则旧的cookie会被丢弃
  2. 只要 NAME,Domain和Path 属性值有一个不同,则旧的cookie就不会被丢弃



4、解决方案

为不同的应用,设置自己的会话名称。不使用默认的JSESSIONID



4.1、操作

修改配置文件

server.servlet.session.cookie.name = JSESSIONID_8081



4.2、验证



4.2.1、8081

在这里插入图片描述

在这里插入图片描述

可以看到8081服务的会话名称是

JSESSIONID_8081=F7E0127694D0A46DF9AA125951EDCCC3



4.2.2、8082

在这里插入图片描述

在这里插入图片描述

可以看到8082服务的会话名称是

JSESSIONID_8082=3A9B93A9863FD01701620C24FD476788



4.2.3、8081

在这里插入图片描述



版权声明:本文为zhou920786312原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。