当前位置: 首页 > article >正文

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

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

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

Session和Cookie的区别

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

Session和Cookie的配合流程
在用户第一次向服务器发送请求时,服务器会根据用户的信息不同,创建不同的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.kler.cn/a/320805.html

相关文章:

  • 论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking
  • MySQL-关联查询和子查询
  • 从零开始学习 sg200x 多核开发之 uboot saveenv 功能使能
  • Vue3 模板语法
  • PETR/PETRv2/StreamPETR论文阅读
  • 海康大华宇视视频平台EasyCVR私有化视频平台服务器选购主要参数有哪些?
  • 2206. 将数组划分成相等数对(排序/哈希)
  • Exception in thread “main“ java.lang.CloneNotSupportedException 解决方案
  • MySQL 8 查看 SQL 语句的执行进度
  • 通信工程学习:什么是VLAN虚拟局域网
  • 【数据库】深入解析 MySQL 语法
  • 在IDEA中如何用git拉取远程某一分支的代码
  • Apollo自动驾驶项目(二:cyber框架分析)
  • if语句的艺术:如何写出Pythonic的条件判断
  • Ubuntu 安装配置nginx
  • 以Flask为基础的虾皮Shopee“曲线滑块验证码”识别系统部署
  • 【最新华为OD机试E卷-支持在线评测】分苹果(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • QT 如何判断电脑已安装某个软件
  • ffmpeg常用命令大全
  • 记一次sql查询优化
  • 《深度学习》ResNet残差网络、BN批处理层 结构、原理详解
  • JavaScript优化性能的几个方法和技巧
  • 人工智能-大语言模型-微调技术-LoRA及背后原理简介
  • HarmonyOS鸿蒙开发实战(5.0)自定义安全键盘场景实践
  • C++面向对象基础
  • 学习CubeIDE——外设中断开发