原因:安全退出其实就是销毁了你的所有session,直接关闭则没有
可能还是不明白,下面详述:
cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件夹中
创建了一个cookie文件,其中保存了您的cookie内容,cookie内容的存储是键值对的方式,键和值都只能是字符串。
cookie的生命周期:可以设置过期时间,如果不设置则是会话级别的,即关闭浏览器就会消失。
cookie在相同内核的浏览器之间是共享的,不同内核浏览器是不共享的例如火狐和IE【存放位置都不同,当然不共享】
Session是在服务器端创建并存放在服务器的内存中的,Session的内容存储是键值对的列表,键是字符串类型,
值可以是对象【所以session的存储更方便】。
Session的生命周期:不同语言都有不同的配置文件,java tomcat的cong中的web.xm
你也可以为自己的web应用配置你需求的时间,甚至可以为某处的session设置精确到秒的过期时间。
客户端关闭浏览器,不会影响服务器端对session的存储。只有session过期了或者是服务器断电,web被重新发布等才会消失。
另外特别说明:session的过期是发呆时间,假如设置10分钟过期,当9分钟的时候你操作了这个页面则会重新计时。
当你启用了session后, session在你打开浏览器后会产生一个sessionid,sessionid是存在于cookie中的,所以客户端
浏览器禁用cookie后session也就不能用了,其实服务器内存中还有这个session,是你访问不到了,
因为每个客户端访问自己存储在服务器内存的cookie时,是通过发送的请求中的cookie,这个cookie带着这个唯一的sessionid。
禁用cookie后,就无法发送这个sessionid给服务器,服务器得不到这个sessionid就不知道找哪个session给用户。
这样大家也就明白为什么不同用户发来的session,访问的时候只会访问到自己的session,而绝对不会访问到别人的session。
特别说明:sessionid存在于cookie但是是存在客户端浏览器内存中,所以关闭浏览器后重新启动一个就会是新的sessionid,
也就是说是新的会话。所以我说sessionid是会话级别的,如下图JSESSIONID过期时间是“会话”

,如果你还想访问上次会话产生的session怎么办呢?很简单,你把上次产生的sessionid传递给服务器,怎么传呢?将sessionid保存到cookie,并指明过期时间为两个星期,你再次重启浏览器时发送给服务器的sessionid就是上次会话的id。就因为一般网站都将sessionid写回到cookie并指明了过期时间,所以你关闭浏览器后马上重启自己还是登录状态。
如果你禁用了cookie还想用session就想办法访问浏览器时将sessionid还能给浏览器就行,可以存到文件甚至,数据库或者任何你想的地方,只是好不好的问题,结果都是可以用session的。最简单是url中附带sessionid,不同语言不同配置,自己找一下
最后说明一点: 不同内核浏览器不能共享cookie,也会产生不同sessionid。
最佳答案