【Web】关于Session过期/失效的理解

【Web】关于Session过期/失效的理解

一直好奇关于Session的过期,一种说法是关闭浏览器即Session失效,另一种说法是可以设置Session的过期时间,时间到了自动过期。

这两种说法到底是怎么回事?Session过期跟Cookie过期又有什么关系?

网上搜了几篇相关文章:

http://www.cnblogs.com/Vae1990Silence/p/4630392.htmlhttp://blog.csdn.net/quiet_girl/article/details/50580095https://www.cisco.com/c/en/us/products/collateral/security/web-security-appliance/cn/117925-technote-csc-00.html

通过阅读上面几篇文章后,对Session过期有了新的理解,简单总结一下:

Cookie保存在客户端浏览器,Session保存在服务器。Cookie可以设置过期时间。

如果Cookie不包含到期日期,则可视为会话Cookie(Session Cookie)。会话Cookie存储在客户端的内存(浏览器占用的内存)中,决不会写入磁盘。当浏览器关闭时,Cookie将从此永久丢失。如果Cookie包含到期日期,则可视为持久性Cookie,存储在客户端的磁盘中。在指定的到期日期,Cookie将从磁盘中删除。客户端请求服务端时,如果客户端的Cookie中没有当前会话的Session Id,则服务端会新分配一个Session,并将与该Session对应的Session Id存到Cookie中发回给客户端浏览器。由于大部分的网站在发回Session Id时使用了会话Cookie(即没有设置过期时间),导致该Cookie存在客户端内存中,所以关闭浏览器即丢失了Session Id信息,再次访问服务端时才找不到对应的Session,于是才有了“关闭浏览器则Session过期”的说法!服务端在保存Session时也可以设置该Session的过期时间,服务端的Web服务容器通常也有一个默认的过期时间。若访问服务器后,保持不关闭浏览器一段时间,超过Session过期时间后再次访问,会发现依然Session过期找不到了(比如表现为跳转到登录页面),则是“没有关浏览器但Session过期了”!当(存放着Session Id的)Cookie和Session中两者有任一过期,即宣告会话过期。

另外,关于Java中设置Session的过期,参考:http://www.cnblogs.com/diewufeixian/p/4221747.html

总结一下方法有三:

在web容器中(如Tomcat)修改配置文件在工程的web.xml中设置创建Session后通过java代码设置

相关推荐

好福利自助理赔处理时效
杭州外卖平台的店铺头像卷起来了 头像、表情包究竟有何魔力?
MapGIS操作手册:从入门到高级应用
钌的英文翻译

钌的英文翻译

07-09 👁️ 9986
哥斯达黎加最后的勇士——传奇门神纳瓦斯
孤岛惊魂5什么时候出

孤岛惊魂5什么时候出

07-06 👁️ 5784
为 AirPods Pro 自定义通透模式和打开对话增强
Win11如何将桌面移至D盘

Win11如何将桌面移至D盘

07-13 👁️ 2599
晋级2022年世界杯,西班牙全队赛后球场内合照庆祝