【Spring】Cookie与Session


一、Cookie是什么?

Cookie的存在主要是为了解决HTTP协议的无状态性问题,即协议本身无法记住用户之前的操作。

  • “状态” 的含义指的是:

默认情况下 HTTP 协议的客端和服务器之间的这次通信,和下次通信之间没有直接的联系

但是实际开发中,我们很多时候是需要知道请求之间的关联关系的

例如登陆站成功后, 第次访问的时候服务器就能知道该请求是否是已经登陆过了

上述图中的 “令牌” 通常就存储在 Cookie 字段中。

如去医院挂号

1. 看病之前先挂号. 挂号时候需要提供份证号, 同时得到了张 “就诊卡”, 这个就诊卡就相当于患者的 “令牌”.

2. 后续去各个科室进检查, 诊断, 开药等操作, 都不必再出份证了, 只要凭就诊卡即可识别出当前患者的份.

3. 看完病了之后, 不想要就诊卡了, 就可以注销这个卡. 此时患者的份和就诊卡的关联就销毁了. (类似于站的注销操作)

4. 来看病, 可以办张新的就诊卡, 此时就得到了个新的 “令牌”

此时在服务器这边就需要记录"令牌"信息, 以及令牌对应的信息, 这个就是 Session 机制所做的作

二、Session是什么?

Session(会话)是Web开发中用于管理用户状态的一种机制。它允许服务器在多个页面请求或多个浏览器会话之间保持用户的状态信息。

所谓的会话,其实就可以理解为 “对话”

在计算机领域,会话是个客与服务器之间的不中断的请求响应。对客的每个请求,服务器能够识别出请求来于同个客。当个未知的客向Web应程序发送第个请求时就开始了个会话。当客明确结束会话或服务器在个时限内没有接受到客的任何请求时,会话就结束了

如我们打客服电话

每次打客服电话,是个会话. 挂断电话,会话就结束了

下次再打客服电话,是个新的会话

如果我们时间不说话,没有新的请求,会话也会结束

服务器同时刻收到的请求是很多的。服务器需要清楚的区分每个请求是属于哪个,也就是属于哪个会话,就需要在服务器这边记录每个会话以及与的信息的对应关系。

  • Session是服务器为了保存信息创建的个特殊的对象

Session的本质就是个 “哈希表”, 存储了些键值对结构. Key 就是SessionID, Value 就是信息(信息可以根据需求灵活设计)

SessionId 是由服务器成的个 “唯性字符串”,从 Session 机制的度来看,这个唯性字符串称为 " SessionId "。但是站在整个登录流程中看待,也可以把这个唯性字符串称为 " token "。

上述例中的令牌ID,就可以看做是SessionId,只不过令牌除了ID之外,还会带些其他信息,如时间、签名等

1. 当登陆的时候,服务器在 Session 中新增个新记录,并把 sessionId返回给客端(通过 HTTP 响应中的 Set-Cookie 字段返回)

2. 客端后续再给服务器发送请求的时候,需要在请求中带上 sessionId。(通过 HTTP 请求中的 Cookie 字段带上)

3. 服务器收到请求之后,根据请求中的 sessionId在 Session 信息中获取到对应的信息,再进后续操作。找不到则重新创建Session,并把SessionID返回

Session 默认是保存在内存中的。如果重启服务器则 Session 数据就会丢失

三、Cookie 与 Session 的区别

1、存储位置

  • Cookie:存储在客户端(用户的浏览器)中,通常以键值对的形式存在。
  • Session:存储在服务器端,客户端通常只存储一个Session ID,用于标识对应的服务器端Session。

2、存储大小和数量限制

  • Cookie:每个Cookie的大小一般限制在4KB左右,每个域名下可以存储的Cookie数量有限(大约20个)。
  • Session:理论上没有严格的大小限制,但受到服务器存储空间的限制。Session可以存储更多的数据。

3、生命周期

  • Cookie:可以设置过期时间,浏览器会在过期后删除Cookie,或者用户可以手动清除。
  • Session:依赖于服务器的配置,通常在用户关闭浏览器或Session超时后结束。

4、安全性

  • Cookie:由于存储在客户端,更容易受到跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等攻击,安全性较低。
  • Session:由于存储在服务器端,不易被篡改,相对更安全。但是,Session ID的传输需要安全保护,以防止Session劫持。

5、使用场景

  • Cookie:适用于存储不太敏感的数据,如用户偏好设置、会话标识符等。
  • Session:适用于存储敏感数据,如用户的登录状态、购物车内容等。

6、传输

  • Cookie:每次HTTP请求都会自动包含在请求头中发送给服务器,增加了HTTP请求的大小。
  • Session:只有Session ID在客户端和服务器之间传递,实际的Session数据存储在服务器端,减少了网络传输。

7、控制权

  • Cookie:由客户端浏览器控制,用户可以禁用Cookie或手动删除。
  • Session:由服务器控制,服务器可以创建、修改和删除Session。

8、跨域访问

  • Cookie:可以设置为跨域访问,允许多个相关联的域名访问相同的Cookie。
  • Session:通常局限于创建它的域名,除非通过特定的机制(如Session联邦)来实现跨域Session共享。

Cookie 和 Session之间主要是通过 SessionId 关联起来的,SessionId 是 Cookie 和 Session 之间的桥梁

注意:

Cookie 和 Session 经常会在起配合使,但是不是必须配合:

  • 完全可以 Cookie 来保存些数据在客端。这些数据不定是份信息,也不定是 SessionId
  • Session 中的sessionId 也不需要得通过 Cookie/Set-Cookie 传递,如通过URL传递

那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35107.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【最新】linux安装docker并配置加速源

我这边之前本地创建了个虚拟机,linux系统的,用于部署服务器。有时安装一些常用工具或者中间件,还是用docker安装方便,而且docker还有编排服务等功能,实际使用中还是会省不少事的,这里记录下安装docker的过程…

SpringBoot动态配置Nacos

重要知识点 Nacos属性的简单使用将SpringBoot中的所有配置全部放入到Nacos中开发人创建单独的命名空间,修改互不影响Nacos经常变动的配置抽离到外部文件中 将项目中的所有配置全部放到到 1. 首先引入包 <!-- nacos 接入--><!-- https://mvnrepository.com/artifact…

【每天一篇深度学习论文】轻量化自适应提取模块LAE

目录 论文介绍题目&#xff1a;论文地址&#xff1a; 创新点方法模型总体架构核心模块描述1. 轻量级自适应提取&#xff08;LAE&#xff09;模块&#xff1a;2. 多路径旁路特征匹配&#xff08;MSFM&#xff09;模块&#xff1a;3. RFABlock&#xff08;感受野注意力卷积&#…

Linux中文件操作

文件由文件内容和文件属性构成&#xff0c;因此对文件的操作就是对文件内容或文件属性的操作。所谓的“打开一个文件”就是将文件的属性或内容加载到内存中&#xff0c;而没有被打开的文件存在于磁盘上。打开的文件称作“内存文件”&#xff0c;未被打开的文件称作“磁盘文件”…

hhdb数据库介绍(10-42)

安全 SQL防火墙 管理平台提供的SQL防火墙功能可为用户拦截高危SQL、误操作SQL等&#xff0c;提升系统安全性。 同时防火墙提供观测功能&#xff0c;可在开启新规则前&#xff0c;通过开启观测状态&#xff0c;判断新规则对业务的影响程度。开启观测状态后&#xff0c;计算节…

白嫖VMware ESXi 8.0 U3新功能Live Patch、无需重启零中断修复漏洞

哈喽大家好&#xff0c;欢迎来到虚拟化时代君&#xff08;XNHCYL&#xff09;&#xff0c;收不到通知请将我点击星标&#xff01;“ 大家好&#xff0c;我是虚拟化时代君&#xff0c;一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

JavaSE学习心得(API与算法篇)

常用API和常见算法 前言 常用API Math System Runtime Object ​编辑浅克隆 深克隆 Objects Biginteger 构造方法 成员方法 底层存储方式 Bigdecimal 构造方法 Bigdecimal的使用 底层存储方式 ​编辑正则表达式 两个判断练习 两个爬取练习 贪婪爬取和非贪…

如何开发高效的企业内训APP?教育培训系统源码搭建实战详解

本篇文章&#xff0c;小编将从教育培训系统的源码搭建、功能设计以及技术实现等方面&#xff0c;详细探讨如何开发一款高效的企业内训APP。 一、企业内训APP的需求分析 在开发企业内训APP之前&#xff0c;首先需要明确其基本需求。一个高效的企业内训APP应该具备以下几个核心…

解释器模式的理解和实践

引言 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它在软件工程中用得相对较少&#xff0c;但在某些特定场景下非常有用。解释器模式提供了一种解释语言的语法或表达式的方式&#xff0c;它定义了一个表达式接口&#xff0c;并通过…

Z029 PHP+MYSQL+LW+饭店预订管理系统的设计与实现 源代码 配置 文档

饭店预订管理系统 1.项目描述2. 开发背景与意义3.项目功能结构4.界面展示5.源码获取 1.项目描述 近几年来&#xff0c;我国计算机信息技术发展迅速&#xff0c;各种各样的信息管理系统层出不穷。互联网电子商务的热潮&#xff0c;改变了人们生活习惯&#xff0c;而作为城市经济…

【力扣热题100】—— Day5.回文链表

正视自己的懦弱和无能&#xff0c;克服自己的嫉妒与不甘 —— 24.12.3 234. 回文链表 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为 回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a…

什么是大数据、有什么用以及学习内容

目录 1.什么是大数据&#xff1f; 1.1大数据的类型 1.2大数据的来源 1.3大数据处理的挑战 1.4大数据的核心技术 2.大数据有什么用&#xff1f; 2.1商业与营销&#xff1a; 2.2医疗与健康&#xff1a; 2.3金融服务&#xff1a; 2.4政府与公共服务&#xff1a; 2.5交通…

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…

分布式数据库环境(HBase分布式数据库)的搭建与配置

分布式数据库环境&#xff08;HBase分布式数据库&#xff09;的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro&#xff0c;点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型&#xff08;推荐&#xff09;”1…

ssh连接工具

我们未来接触到的linux系统一般情况下是没有界面&#xff08;桌面环境&#xff09;&#xff0c;我们一般会在自己工作的电脑上&#xff0c;通过相关ssh工具&#xff0c;利用网络连接到远程的你的服务器上。连接工具有很多&#xff1a;mobaxterm、xshell/xftp、putty等等 mobaxt…

苹果 ATS 配置SSL证书

Apple的App Transport Security (ATS) 是一项安全机制&#xff0c;旨在确保iOS和macOS应用的网络通信使用HTTPS加密。自iOS 9和OS X 10.11以来&#xff0c;默认情况下所有网络请求都必须使用HTTPS&#xff0c;除非明确允许非HTTPS连接。 在2017年1月1日之前&#xff0c;开发者可…

安卓逆向之对抗Anti-Frida学习

基础补充 什么是 Anti-Frida 保护&#xff1f; Anti-Frida保护是指在移动应用或程序中采用的一种安全技术或防护机制&#xff0c;旨在防止或干扰Frida等动态分析工具的注入与使用。 Anti-Frida保护常见技术 有哪些&#xff1f; 检测frida-agent.so的注入 &#xff1a; Fr…

安全架构评审

安全架构评审 1.概述2.安全设计原则3.美团安全架构评审模型安全需求分析架构review攻击面分析和威胁建模攻击面分析威胁列表 1.概述 完整的安全评审会包含安全架构评审、安全代码审核和安全测试三个手段 安全架构评审聚焦于探寻安全设计中的漏洞&#xff0c;以宏观视野全面考…

迎接国庆,我上线了第一款小程序

最近花了些时间&#xff0c;写了一个 “国庆头像” 小程序。正好快国庆节了&#xff0c;于是分享一下我的这个 “Starstick星点贴纸” 小程序&#xff0c;顺便简单讲讲以及其中的设计、开发、上线过程。 小程序的界面是这样的&#xff1a; &#x1f52e;背景 今年中秋前夕&am…

房产销售系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于房产销售系统当然也不能排除在外&#xff0c;随着网络技术的不…