关闭浏览器后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就失效了


来自为知笔记(Wiz)

时间: 2024-10-12 04:18:31

关闭浏览器后Session失效原因分析的相关文章

对关闭浏览器后Session对象失效的理解

Session是在客户端请求到达服务器时,服务器为此请求发出的客户所创建的一个对象,保存在服务器端.购物车是一个很好的例子,一个用户可以有很多session,但每个session只针对一个用户,这就保证了不同session之间的信息独立. 首先说明一点,在通常意义上,session所能发挥作用是基于cookie机制.针对所需要解释的问题,做这样一个假设:我们第一次访问一个网页.当客户端发送请求后,服务端会建立一个针对此请求发出客户的session对象,而且每个session都会有一个sessio

C# 串口关闭时主界面卡死原因分析

原文:C# 串口关闭时主界面卡死原因分析 问题描述 前几天用SerialPort类写一个串口的测试程序,关闭串口的时候会让界面卡死. 参考博客windows程序界面卡死的原因,得出界面卡死原因:主线程和其他的线程由于资源或者锁争夺,出现了死锁. 参考知乎文章WinForm界面假死,如何判断其卡在代码中的哪一步?,通过点击调试暂停,查看ui线程函数栈,直接定位阻塞代码的行数,确定问题出现在SerialPort类的Close()方法. 参考文章C# 串口操作系列(2) -- 入门篇,为什么我的串口程

erlang监控进程在启动进程退出后异常退出原因分析

一.问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{'EXIT',Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出.启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出,为什么设置了trap_exit为true,还会退出呢? 二.原因分析 查看supervisor的源码,supervi

客户端禁用Cookie后session失效的问题

客户端禁用Cookie后session会失效,该如何解决? 解决方法:使用URL重写技术 URL重写:在原来的URL后面加上";jsessionid=123456789" 即:url--->url;JSESSIONID=123 注意: *For robust session tracking, all URLs emitted by a servlet should be run through this method. Otherwise, URL rewriting cann

IE下超链接使用绝对定位后失效原因分析及解决方法

我们把a链接的display设置为block,但如果对该标签设置为position:absolute后,会发现在ie6.ie7下有时点击无效,ie8下有效(ie8标准),使用zoom:1方式也无法解决问题.下面是我整理出的几种方法给大家分享一下,希望能给您带来帮助. 1.使用position:relative而不是position:absolute:2.添加背景色:3.添加透明的背景图片,gif或png,但会增加无意义的http请求:4.使用background:url(about:blank)

关于浏览器部分JS失效原因

情况:在不同电脑访问服务器项目时,JS功能失效,原因如下: 一:浏览器设置问题 1.IE浏览器开启JavaScript方法: 在IE界面菜单栏中"工具"中选择"Internet选项"–"安全"选项卡–选择"Internet"(蓝色的小地球)–"自定义级别"–找到"脚本"下的"Java小程序脚本"中进行启用.如下图所示,设置完成后,重新打开浏览器设置即可生效. 2.36

PHP计划任务之关闭浏览器后仍然继续执行的函数 ignore_user_abort

备忘一下这个函数: 函数名称:ignore_user_abort 本函数配置或取得使用端连接中断后,PHP 程序是否仍继续执行.默认值为中断连接后就停止执行.在 PHP 配置文件中 (php3.ini/php.ini) 的 ignore_user_abort 选项就是配置处.使用方法: 代码如下: ignore_user_abort(true); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. 这样就可以实现计划任务效果了.但是还是要客户端访问程序才行. 比如说在生成静态页

PHP计划任务之关闭浏览器后仍然继续执行的函数

函数名称:ignore_user_abort 本函数配置或取得使用端连接中断后,PHP 程序是否仍继续执行.默认值为中断连接后就停止执行.在 PHP 配置文件中 (php3.ini/php.ini) 的 ignore_user_abort 选项就是配置处.本功能在 PHP 3.0.7 版之后才开始提供. 官方说明:http://cn2.php.net/manual/en/function.ignore-user-abort.php ignore_user_abort(true); //即使Cli

window.close(); 关闭浏览器窗口js代码的分析总结

序号 关闭代码 需要确认 无任何作用 无需确认 1 window.close() IE7 firefox,chrome,safari Opera 2 window.opener=null;window.open('','_self');window.close();   firefox IE7,Opera,chrome,safari 3 window.open('','_self');window.close();   firefox IE7,Opera,chrome,safari 4 wind