tomcat发现一个奇怪的问题,如我在本地tomcat发布了一个工程testProject,输入127.0.0.1:8080/testProject登录了,但是输入:本机ip地址:8080/testP

本文探讨了Tomcat环境下不同访问方式导致的JSessionID不一致问题,揭示了同一浏览器、同一应用中可能存在多个JSessionID的原因,并解释了浏览器如何匹配HTTP请求与Cookie。

tomcat发现一个奇怪的问题,如我在本地tomcat发布了一个工程testProject,输入127.0.0.1:8080/testProject登录了,但是输入:本机ip地址,如10.10.20.20:8080/testProject,却还要登录。


前提:我通过写入session的方式,进行登录控制。

User user = (User ) c.getSessionAttr("userInfo");

为什么?会出现这个问题?

原来,tomcat给这两次http请求的jsessionid不一样。所以127.0.0.1的jsessionid在tomcat中开辟了一个空间存放session。而本机ip地址的jsessionid过来,在tomcat中并没有写入session。





--------总结:

1jsessionid是tomcat给http url请求的,不是给浏览器的,所以在同一个浏览器下、同一个工程,可能jsessionid有多个。

2jsession写入浏览器的cookie中,

3发起一个http url请求的时候,浏览器会把属于该http url请求的cookie,打包入http包头中(见上面的各图)。


那么有一个问题,在发起一个http url请求的时候,浏览器是怎么判断哪个cookie是这个http url的呢?


这是因为,浏览器cookie写入的时候,是加着http url地址的。即cookie在浏览器中是如此存放的:

http ur l + cookie内容

以下是验证:







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值