Session和Cookie是什么?有什么区别?分布式Session问题又是什么?

news/2024/9/28 21:03:09/

SessionCookieSession_0">SessionCookie是什么?有什么区别?分布式Session问题又是什么?

  • Cookie:是服务器发送到浏览器并保存在本地的数据。在浏览器下一次向同一服务器再次发送请求时,将Cookie也发送给服务器,并以此来判定这个请求是否是浏览器第一次发送的请求。至于是怎么判定的,会在下面的CookieSession配合中说到。
  • Session:代表浏览器和服务器的一次会话。Session存储用户会话所需的属性和配置信息。

SessionCookie的区别

  • 保存位置不同Session保存在服务器端,Cookie保存在浏览器。正因如此,Cookie在保存数据方面的安全性不如Session,所以Cookie用来保存一些隐私性不强的内容比较合适。
  • 存取内容的方式不同Cookie只能保存ASCLL,而Session可以保存任意类型。
  • 数据存储的大小不同Cookie只能保存小于4K的内容,而Session则大小不固定,但肯定的是其大小要比Cookie大的多。

SessionCookie的配合流程
在用户第一次向服务器发送请求时,服务器会根据用户的信息不同,创建不同的Session,并生成该Session的唯一标识SessionID,返回给浏览器。浏览器在接收到SessionID后,会将SessionID保存在Cookie中,并记录这个SessionID属于哪个域名。

在用户第二次请求服务器时,请求会去查找该域名下是否存在Cookie,存在就将Cookie发送给服务器。服务器会从Cookie中拿到SessionID,并根据这个SessionID查找到对应的Session

分布式Session问题
在上面的配合流程中,我们就会发现一个问题:在分布式环境下,服务器肯定不止一个,而Session是保存在服务器的。那如果多服务器的环境下,两次的请求发送到不同的服务器,那不就造成SessionID查找不到对应的Session了吗?
这就是分布式Session问题。

解决办法:

  1. Nginx:服务端使用Nginx进行代理,每个请求按照请求的IP的hash进行分配服务器,保证同一IP的请求都会发送到同一服务器。
  2. Session复制:任意一台服务器的Session发生改变的时候,都会广播给所有服务器。
  3. 中间件:将Session保存在一个中间件中。

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

相关文章

课程记录9.26

我的答案 掌握坡度、坡向、坡度变率、坡向变率、地面粗糙度和地形起伏度等基本地形因子的理论及其基于DEM的提取方法与原理。 0、 将dem文件导入arcgis10.8中, 1、 使用Arc Toolbox中的Slope工具 (Input中导入dem-》选择自己的文件夹并命名为坡度-》点…

设计模式实战——开发中常用到的单例模式

单例模式介绍 单例模式是一种常用的软件设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。以下是对单例模式的介绍: 一、定义与特点 定义:单例模式(Singleton Pattern)是一种创建…

微积分复习笔记(1):单变量微积分

P.S. 本来不想分篇的&#xff0c;但居然字数超上限了。 2 π x < sin ⁡ x < x ( 0 < x < π 2 ) . \frac{2}{\pi}x<\sin x<x\ (0<x<\frac{\pi}{2}). π2​x<sinx<x (0<x<2π​). x < tan ⁡ x < 4 π x ( 0 < x < π 4 ) . x…

深入探索:MATLAB中的硬件支持包(HSP)及其应用

在MATLAB环境中&#xff0c;硬件支持包&#xff08;HSP&#xff09;扮演着至关重要的角色&#xff0c;尤其是在与硬件交互和嵌入式系统开发方面。HSP提供了一套工具和库&#xff0c;使得MATLAB能够与特定的硬件平台进行有效通信&#xff0c;实现代码的生成和优化。本文将详细介…

select查询表单

select查询语法&#xff1a; select 【1】from 【2】where 【3】 1若为*表示显示全部数据列&#xff0c;若为某一列列名则只显示本列内容&#xff08;也可为多列列名&#xff09;。若在1后面加as ‘c’&#xff0c;则表示把查询的列名换成c。 2为要查询的表表名。 3为查询的…

【CSS】鼠标 、轮廓线 、 滤镜 、 堆叠层级

cursor 鼠标outline 轮廓线filter 滤镜z-index 堆叠层级 cursor 鼠标 值说明值说明crosshair十字准线s-resize向下改变大小pointer \ hand手形e-resize向右改变大小wait表或沙漏w-resize向左改变大小help问号或气球ne-resize向上右改变大小no-drop无法释放nw-resize向上左改变…

Spring Boot 整合MyBatis-Plus 实现多层次树结构的异步加载功能

文章目录 1&#xff0c;前言2&#xff0c;什么是多层次树结构&#xff1f;3&#xff0c;异步加载的意义4&#xff0c;技术选型与实现思路5&#xff0c;具体案例5.1&#xff0c;项目结构5.2&#xff0c;项目配置&#xff08;pom.xml&#xff09;5.3&#xff0c;配置文件&#xf…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 4 获取Push Token

场景介绍 注意 Push Kit在您获取Push Token时进行了推送服务权益校验&#xff0c;请您在进行开发前先阅读开通推送服务章节&#xff0c;完成相关配置。 Push Token标识了每台设备上每个应用&#xff0c;开发者调用getToken()接口向Push Kit服务端请求Token&#xff0c;获取到…