关于Session过期/失效的理解,session与cookie的交互

article/2025/10/3 14:38:37

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

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

网上搜了几篇相关文章:

  • http://www.cnblogs.com/Vae1990Silence/p/4630392.html
  • http://blog.csdn.net/quiet_girl/article/details/50580095
  • https://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中没有当前会话的SessionId,则服务端会新分配一个Session,同时通过算法生成一个唯一的(不重复的)sessionId,并将与该Session对应的SessionId存到Cookie中发回给客户端浏览器。
  • 由于大部分的网站在发回SessionId时使用了会话Cookie(即没有设置过期时间),导致该Cookie存在客户端内存中,所以关闭浏览器即丢失了SessionId信息,再次访问服务端时才找不到对应的Session,于是才有了“关闭浏览器则Session过期”的说法!
  • 服务端在保存Session时也可以设置该Session的过期时间,服务端的Web服务容器通常也有一个默认的过期时间。若访问服务器后,保持不关闭浏览器一段时间,超过Session过期时间后再次访问,会发现依然Session过期找不到了(比如表现为跳转到登录页面),则是“没有关浏览器但Session过期了”!
  • 当(存放着SessionId的)Cookie和Session中两者有任一过期,即宣告会话过期。

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

总结一下方法有三:

  • 在web容器中(如Tomcat)修改配置文件
  • 在工程的web.xml中设置
  • 创建Session后通过java代码设置  https://blog.csdn.net/u010002184/article/details/79411544 《session的常用方法》

转自:https://www.cnblogs.com/guxin/p/what-is-http-session-expire.html

 


http://chatgpt.dhexx.cn/article/lSWXIAmt.shtml

相关文章

数据库 存储过程

创建存储过程 create procedures_student sex varchar(10) as select * from 学生信息 where 性别sex 这样就创建了一个存储过程 exec proc_student sex女 使用带默认值的参数 create proc p_employee departmentid varchar&…

数据库--存储过程

介绍 对sql语句进行封装、复用 创建、调用 --存储过程 --创建 create procedure p1() beginselect count(*) from t_test;end;--调用 call p1();存储过程查看、删除 --查看 select * from information_schema.ROUTINES WHERE ROUTINE_SCHEMA test SHOW create procedure p1…

SQL Sever数据库存储过程

一、背景介绍 1.遇到存储过程 回顾之前知识,使用在当下(毕业设计) 2.了解周边知识 二、思路&方案 1.了解存储过程定义、语法、种类 2.存储过程有什么优缺点 3。存储过程与触发器和函数的联系 三、过程 1.什么是存储过程?…

数据库MySQL —— 存储过程

目录 一、介绍 二、基本语法 三、变量 1. 系统变量 2. 用户自定义变量 3. 局部变量 四、流程控制语句 1. if判断 2. 参数 3. case 4. 循环 4.1 while 4.2 repeat 4.3 loop 五、游标 - cursor 六、条件处理程序 - handler 七、存储函数 一、介绍 存储过…

mysql数据库之存储过程

一、存储过程简介。 存储过程是事先经过编译并存储在数据库中的一段sql语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是也有好处的。 存储过程思想上很简单&…

MySQL数据库存储过程

存储过程相关命令汇总存储过程存储过程优化再说存储过程的输出参数再说WHILE 和 REPEAT循环 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次…

MySQL数据库存储过程讲解与实例

存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数&#x…

mysql数据库存储过程详解

1.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存…

MySQL中的存储过程(详细篇)

文章目录 概述优点缺点 MySQL存储过程的定义存储过程的基本语句格式存储过程的使用定义一个存储过程定义一个有参数的存储过程定义一个流程控制语句 IF ELSE定义一个条件控制语句 CASE定义一个循环语句 WHILE定义一个循环语句 REPEAT UNTLL定义一个循环语句 LOOP使用存储过程插…

跨域及cors解决跨域

1.什么是跨域 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的…

什么是跨域?如何解决跨域?

✨ 目录 🎈 什么是跨域🎈 跨域场景🎈 解决跨域的四种方式 🎈 什么是跨域 域: 是指浏览器不能执行其他网站的脚本跨域: 它是由浏览器的 同源策略 造成的,是浏览器对 JavaScript 实施的安全限制,…

关于跨域后端解决跨域问题

一、为什么会有跨域 出于浏览器的同源策略限制。**同源策略(Sameoriginpolicy)**是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。同源策略会阻止一个域的ja…

什么是跨域?跨域问题怎么解决?

目录 一、什么是跨域? 二、为什么会出现跨域问题? 三、常见的跨域场景 四、跨域解决方法 1、JSONP (1)JSONP原理 (2)JSONP和AJAX对比 (3)JSONP优缺点 (4&#x…

跨域的本质

简介 相信大家在做web系统开发的时候,都遇到过前端页面访问另一个服务器而非本服务器从而遭遇的跨域问题。跨域是个很常见的问题,虽然在web系统中的解决方式很简单,加一段耳熟能详的代码,或者一个注解,或者在某个框架中…

跨域及解决

文章目录 什么是跨域?Origin同源的例子不同源的例子为什么需要跨域?请求跨域了,那么请求到底发出去没有? 如何解决?1.JSONP2.corsa.简单请求b.复杂请求 3.postMessage4.websocket5.nginx6.document.domain Iframe cli…

什么是跨域?以及解决跨域的方法?

【学习什么是跨域,以及如何解决跨域。】 1、什么是跨域?(什么是同源策略?) 跨域: 由于浏览器的同源策略引起的,如果说协议、域名、端口号有任何一个不一样,都会引起跨域 为什么会出…

【跨域】Java后端解决跨域问题

废话不多说,先上完整代码 建corsConfig文件,copy下面内容,放进去 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfigur…

什么是同源策略,什么是跨域,如何解决跨域

1.什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少…

前端解决跨域----代理跨域

跨域报错: CORS error 为什么会跨域 ​ 先了解跨域的概念:发送请求的url的协议、域名、端口三者之间任意一个与当前页面的地址不同则视为跨域。 解决跨域 vue.config.js 设置代理跨域 module.exports {devServer: {proxy: {/api: {target: "ht…

什么是跨域问题?跨域解决问题

一.为什么会出现跨域问题? 出于浏览器的同源策略限制.同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常的功能可能会受到影响,跨域收是Web是构建在同源策略基础上的,浏览器只是针对同源策略的一种实现,同源策略会阻止一个域的Jav…