SessionID的本质

一、客户端用cookie保存了sessionID

客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于登录状态,有相应的权限;如果没有找到对应的sessionID,这说明:要么是我们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过20分钟),session被服务器清除了,则服务器会给你分配一个新的sessionID。你得重 新登录并把这个新的sessionID保存在cookie中。 
在没有把浏览器关掉的时候(这个时候假如已经把sessionID保存在cookie中了)这个sessionID会一直保存在浏览器中,每次请求的时候都会把这个sessionID提交到服务器,所以服务器认为我们是登录的;当然,如果太长时间没有请求服务器,服务器会认为我们已经所以把浏览器关掉了,这个时候服务器会把该sessionID从内存中清除掉,这个时候如果我们再去请求服务器,sessionID已经不存在了,所以服务器并没有在内存中找到对应的 sessionID,所以会再产生一个新的sessionID,这个时候一般我们又要再登录一次。

二、客户端没有用cookie保存sessionID

这 个时候如果我们请求服务器,因为没有提交sessionID上来,服务器会认为你是一个全新的请求,服务器会给你分配一个新的sessionID,这就是 为什么我们每次打开一个新的浏览器的时候(无论之前我们有没有登录过)都会产生一个新的sessionID(或者是会让我们重新登录)。 
当我们一旦把浏览器关掉后,再打开浏览器再请求该页面,它会让我们登录,这是为什么?我们明明已经登录了,而且还没有超时,sessionID肯定还在服 务器上的,为什么现在我们又要再一次登录呢?这是因为我们关掉浏览再请求的时候,我们提交的信息没有把刚才的sessionID一起提交到服务器,所以服 务器不知道我们是同一个人,所以这时服务器又为我们分配一个新的sessionID,打个比方:浏览器就好像一个要去银行开户的人,而服务器就好比银行, 这个要去银行开户的人这个时候显然没有帐号(sessionID),所以到银行后,银行工作人员问有没有帐号,他说没有,这个时候银行就会为他开通一个帐 号。所以可以这么说,每次打开一个新的浏览器去请求的一个页面的时候,服务器都会认为,这是一个新的请求,他为你分配一个新的sessionID。

转载于:https://www.cnblogs.com/wangcp-2014/p/5870839.html

sessionID的本质相关推荐

  1. SessionID 的本质

    2019独角兽企业重金招聘Python工程师标准>>> 一.客户端用cookie保存了sessionID 客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这 ...

  2. 单点登录与权限管理本质:session和cookie介绍

    本篇开始写「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,这部分主要介绍相关的知识概念.抽象的处理过程.常见的实现框架.通过这部分的介绍,能够对单点登录与权限管理有整体上的了解,对其相关 ...

  3. ajax跨域时使得后台的sessionid不断地的变化,以及layui表格支持跨域的方法,java

    java+ajax跨域sessionid不断变化 由于实现一个功能,需要实现一个在过滤器中使用session的程序, 结果在前端使用ajax访问后台时,后台一直不能获取session存的值,导致了某一 ...

  4. session,sessionid,cookie之间的关系解析

    session,sessionid,cookie之间的关系解析 文章目录 session,sessionid,cookie之间的关系解析 1.简介 2.session和cookie定义,创建,周期和联 ...

  5. Sessionid和Token的区别

    原文链接1:https://blog.csdn.net/qq_1290259791/article/details/81193914 原文链接2:https://blog.csdn.net/qq_12 ...

  6. SpringSession系列-sessionId解析和Cookie读写策略

    SpringSession系列-sessionId解析和Cookie读写策略 sessionId 解析策略 HttpSessionIdResolver 基于Cookie解析sessionId 基于请求 ...

  7. spring Ioc本质

    IOC的本质: 控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法 也有人认为DI只是IoC的另一种说法. 没有IoC的程序中 , 我们 ...

  8. 软件定义汽车:本质并行化的有效平台

    软件定义汽车:本质并行化的有效平台 Software-defined automobiles: An efficient platform for essential parallelization ...

  9. 模拟Servlet本质

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

最新文章

  1. 在什么情况下我应该使用malloc和/或new?
  2. Spring 注入 Filter
  3. Vector反向迭代器使用
  4. 特征选择 回归_如何执行回归问题的特征选择
  5. 测试一体机ASM failgroup的相关问题处理
  6. C++ STL list删除和修改
  7. 作业要求 20181030-1 Alpha发布用户使用报告
  8. 既然Java反射可以访问和修改私有成员变量,那封装成private还有什么意义
  9. php旧物交易开源代码_仿互站PHP源码 虚拟物品在线交易网站源码 附14套风格
  10. ISP浅谈-Demosaic
  11. 默纳克电路图 莫纳克MCTC-MCB-C2图纸变频器pdf格式
  12. Android语音识别-阿里语音识别
  13. 语音识别 自然语言处理
  14. 鼠标滑轮成了页面缩放的解决方法
  15. 心如赤子,不贪不骄不纵
  16. 涉及到的非线性滤波算法 -- 理解
  17. 关于getdate()的不同的日期格式
  18. 从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案
  19. deepin系统修改IP地址记录
  20. 鸿蒙系统支持名单,12月支持鸿蒙系统的机型名单!想尝鲜的可以注意了!

热门文章

  1. python 非线性规划_自动驾驶运动规划-Hybird A*算法(续)
  2. 12306订票候补是个坑_还在加钱抢票?12306已屏蔽多个抢票软件渠道!
  3. alv 刷新_钜献 | 60小时刷新你的雅思托福成绩!明早9点我们要搞事情了!
  4. tp5 日期范围查询_VB实战应用 | 如何巧妙解决日期范围查询问题
  5. php foreach面试题,PHP引用理解之神奇的foreach面试题
  6. java泛型(三)、通配符的使用
  7. 短信发送:webservice调用第三方接口发送短信
  8. myeclipse10.1破解方法
  9. 5G时代谁的天下???
  10. 叹息“博客园”的凋零