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内容
以下是验证:
本文探讨了Tomcat环境下不同访问方式导致的JSessionID不一致问题,揭示了同一浏览器、同一应用中可能存在多个JSessionID的原因,并解释了浏览器如何匹配HTTP请求与Cookie。
1421

被折叠的 条评论
为什么被折叠?



