关闭浏览器后Session失效原因分析

Posted gossip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关闭浏览器后Session失效原因分析相关的知识,希望对你有一定的参考价值。

参考文章:http://www.tuicool.com/articles/VNbYjqm

首先需要理解一下几点:
1、Http是无状态的,即对于每一次请求都是一个全新的请求,服务器不保存上一次请求的信息
2、Session是保存在服务端的,为什么后续请求会读取到session?因为请求会包含一个sessionId,该值存储在cookie中,服务器通过这个sessionId找到对应的session
3、cookie是有过期时间的,规则如下:
Cookie的Max-Age决定了Cookie的有效期,单位为秒
0:Cookie立即作废(如果原先浏览器已经保存了该Cookie,那么可以通过设置Max-Age为0使其失效)
<0:默认,表示只在浏览器内存中存活,一旦浏览器关闭则Cookie销毁,浏览器的max-age默认为-1
>0: 将Cookie持久化到硬盘上,有效期由Max-Age决定

综上所述:
1、sessionId是一个cookie,max-age默认为-1,即关闭浏览器后sessionId就会清空
2、sessionId(cookie)清空后,自然就无法找到对应的session,所以session就失效了











以上是关于关闭浏览器后Session失效原因分析的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何实现关闭浏览器的情况下关闭session

php为啥session能在当前页面中输出值,在其他页面从session中取值的时候是NULL

谁解释一下session的生命周期

hibernate 一级缓存session关闭后失效。二级缓存啥时候失效?

[转]关闭浏览器session就消失了吗

PHP中,怎么才能关闭浏览器后自动销毁session?