会话与会话管理:Cookie与Session的深度解析

news/2025/3/1 17:56:43/

一、什么是会话?

二、Cookie:客户端存储技术

1. Cookie的工作原理

 2、在后端设置cookie

 3、在前端设置cookie

 三、浏览器开启了cookie禁用怎么办?


一、什么是会话?

        会话(Session)是指一个用户与服务器之间的一系列交互过程。从用户第一次访问服务器开始,到用户关闭浏览器结束,这个过程称为一个会话。会话管理的目标是让服务器能够“记住”用户的身份和之前的操作,从而实现有状态的交互。

        会话分为两种类型:

  1. 有状态会话(Stateful Session):服务器主动维护用户的会话状态信息(如用户登录状态、操作记录等),并将其存储在服务端。类似于“服务员记住你的喜好”。

  2. 无状态会话(Stateless Session):服务器不存储用户状态信息,所有状态由客户端自行管理(如通过URL参数或客户端存储)。类似于“服务员不会记住你”。

由于HTTP协议本身是无状态的,需要借助CookieSession技术实现会话管理

        会话管理:像http这种不会保存会话状态的需要 借助其他方法来帮助保存会话状态,让服务器能够“记住”用户的身份和之前的操作。cookie客户端技术【把状态存在客户端】、session服务端技术【把状态存在服务端】

二、Cookie:客户端存储技术

1. Cookie的工作原理

        cookie由服务器创建,【所有第一次访问没有信息】然后通过响应发送给客户端,发送到用户浏览器并保存到本地的一块信息。他会在浏览器下次发起请求时携带并发送到服务器上

  

 

 2、在后端设置cookie

   ① test: 创建一个设置cookie的服务器后端 SetCookie

    查看cookie:

      

   设置值: 

   设置cookie后任一请求都能携带cookie信息 :

② 获取cookie:创建一个GetCookie的服务器后端 

后端输出 

  

 3、在前端设置cookie

        cookie作为一个客户端技术,在前端页面利用js技术也可以设置获取

设置:

 获取:

 也可以使用jquery操作:jQuery Cookie 插件 | 菜鸟教程----👍

这里我是本地引入的 

 获取所有cookie:console.log($.cookie(''))

可以直接获取某个cookie console.log($.cookie('account')) 

java"> //删除某个cookie$.removeCookie('color');

 

三、Session:服务端的会话管理技术

1、Session的工作原理

         Session是一种存储在服务器端的技术。服务器会为每个用户创建一个Session,并将Session ID存储在Cookie中发送给客户端。客户端在每次请求时会携带Session ID,服务器通过Session ID来识别用户。 

       

2、服务器后端设置session----只能在后端设置,前端设置不了 

 

可以看到JSESSIONID----每次访问都会更新

 服务器后端获取session

删除session 

输出就没有名字了

销毁session

 三、浏览器开启了cookie禁用怎么办?

       如果浏览器开启了cookie禁用,就彻底不能用cookie了,session也不能正常使用,但是session可以挽救一下:

在 session 这个地方,重写 URL,借助重定向直接跳到 get session。

 


http://www.ppmy.cn/news/1575833.html

相关文章

CES Asia 2025前瞻:网络安全与数据隐私成焦点

在数字化转型的浪潮加速奔涌之际,网络安全与数据隐私已然成为企业发展版图中的核心关切。即将盛大启幕的CES Asia 2025第七届亚洲消费电子技术贸易展(赛逸展),无疑将汇聚行业目光,成为探讨网络安全与数据隐私领域前沿趋…

PySpark中mapPartitionsWithIndex等map类算子生成器函数问题 - return\yield

PySpark中mapPartitionsWithIndex等map类算子生成器函数问题 - return\yield 顾名思义,本文讲述了map算子生成器函数的相关问题——return 和 yield的使用。 首先先讲结论,在使用map等迭代生成的算子时最好使用yield。 1、问题产生 在写代码的过程中&…

github上传代码(自用)

github上传代码(自用) 前提:git已与github完成秘钥连接配置 一、克隆仓库法: 把远程仓库克隆到本地,会自动生成仓库配置,不用自己连接 1、github建立远程仓库 2、新手引导(创建仓库时不要创…

UEditor集成Markdown编辑功能方案

分步解决方案: 1. 推荐免费开源Markdown库 推荐使用 markdown-it(MIT协议) 官网:https://github.com/markdown-it/markdown-it 特点:轻量级(15KB)、扩展性强、支持CommonMark规范、中文文档丰…

单片机开发为什么不用C++?

最近受到很多初学者的灵魂拷问,单片机需要学C吗? 还别说,问这问题的还挺多的,今天以一篇文章来说下。 很多小白觉得,C语言这老古董,语法简陋得像石器时代的产物,为什么还牢牢霸占着单片机开发的…

【Netty】五种经典 IO 模型详解,附各种模型流程图及流程详解

相关概念 同步:线程自己去获取结果(一个线程) 异步:线程自己不去获取结果,而是由其它线程送结果(至少两个线程) 同步阻塞、同步非阻塞、同步多路复用、异步阻塞(没有此情况&#x…

多线程视频处理代码

1. 什么是多线程 线程是进程中的一个执行单元,是操作系统进行调度的最小单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存和文件描述符,但每个线程有自己的程序计数器、寄存器和栈。 多线程是指在同一个进程中并发…

【Docker】Dify+ollama+deepseek(打造本地私有化大模型)

最近很流行私有化部署dp,之前已经尝试过ollamawebuideepseek本地化部署,但是体验感官上不是很多,特别卡顿。然后今天突然了解到Dify,也支持私有化部署大模型。而且似乎功能更加强大,那不得实操一下啊。 1.初识Dify D…