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

Cookie、Session、Token详解

(一)Cookie:食堂给你的 “消费小纸条”

🌰 比喻:Cookie 就像食堂给你的 “消费小纸条”

  • 每次你买饭菜(访问网站页面),食堂阿姨(服务器)会给你贴一张小纸条(Cookie),上面记着你买过啥菜系、上次消费金额
  • 下次再去(再次访问网站),不用你说,食堂阿姨看小纸条(浏览器自动发 Cookie 给服务器),就知道给你推荐啥新菜,还能认出你是老顾客

💡 关键特点:

  • 存在你手机 / 浏览器里(小纸条揣你兜里),能存简单信息(口味偏好、登录标记 ),但存太多会 “写不下”(容量小,一般 4KB 左右)
  • 每次去食堂自动带(你揣着小纸条进出食堂),但别人能看见纸条内容(易被拦截篡改,得加 “防盗” 设置 )

❓ 但 Cookie 有麻烦:

  • 小纸条能被改:别人抢你小纸条(被黑客拦截),能改成 “你是 VIP” 骗阿姨;纸条也不能写太多字(Cookie 存不了复杂信息,一般就几 KB)
  • 跨地儿不好使:你去食堂的其它分店(跨域访问其他网站服务),这纸条分店阿姨不认,得重新打交道

下面这张图就是实际的Cookie操作

(二)Session:你在食堂的 “专属储物柜”

🌰 比喻:Session 是你在食堂的 “专属储物柜”

  • 第一次去食堂(登录网站),食堂前台(服务器)给你开一个储物柜(创建 Session),钥匙是个编号(Session ID),还把钥匙绑在你手腕带(Cookie 存 Session ID)
  • 你把饭盒、常用餐具(购物车商品、个人信息 )放储物柜(Session 存服务器),之后每次取东西(访问需要登录的页面),刷手腕带(发 Session ID),前台就知道开哪个柜子,拿你存的东西

💡 关键特点:

  • 东西存在食堂(服务器),能存复杂信息(比 Cookie 能存更多、更敏感内容 ),但食堂得管好钥匙(服务器维护 Session 耗资源,连锁食堂 / 分布式系统里 “钥匙同步” 麻烦 )
  • 靠 Cookie 传钥匙(手腕带丢了,别人拿你钥匙就乱套,所以要防 Cookie 被盗 )

为啥需要 Session

  • 藏好重要东西:饭卡、密码(敏感信息)放自己柜子(服务器),比塞纸条(Cookie 存敏感信息)安全多了!
  • 能存更多内容:小柜子能塞下你一周的用餐习惯、收藏菜单(Session 存复杂信息,比 Cookie 能存更多)

但!要是食堂分店多(分布式系统,多个服务器),你在 A 店存的东西,B 店柜子里没有(Session 难跨服务器共享),还得专门搬数据(靠 Redis 等工具同步 Session),麻烦~

(三)Token:食堂给你的 “万能电子饭卡”

🌰 比喻:Token 是 “万能电子饭卡”,像手机里的二维码

  • 第一次用 App 下单(登录系统),食堂发你个二维码(Token),上面加密写着 “你是学生,能打 8 折,能进教师食堂”
  • 之后不管去食堂窗口、小卖部(访问不同服务),扫二维码(请求带 Token),阿姨(服务器)不用查柜子,直接扫二维码看权限(解析 Token 里的加密信息)

💡 为啥需要 Token

  • 跨地儿随便用:你去分校食堂(跨域、跨系统),二维码全国通用(Token 能跨平台、跨服务用),不用重新开柜子
  • 不用共享状态:食堂不用记住你存啥(Token 无状态),扫一次码就知道你是谁、能干嘛,分店多也不怕(适合分布式系统)

举个🌰:你用手机点外卖(App 登录),去线下食堂刷脸(另一个服务),用同个 Token 就能认你身份,不用重新登录~

简单说:

  • Cookie 是 “基础身份贴条”,但存不了太多、不安全;
  • Session 把重要东西藏服务器,解决 Cookie 存敏感信息的问题;
  • Token 让跨系统、跨平台 “认身份” 更方便,适合复杂、分布式的互联网应用~
完美撒花~
http://www.lryc.cn/news/620810.html

相关文章:

  • 如何在 Ubuntu 24.04 LTS Noble Linux 上安装 Wine HQ
  • OpenCV对椒盐处理后的视频进行均值滤波处理
  • 短剧小程序系统开发:赋能创作者,推动短剧艺术创新发展
  • 【软件测试】自动化测试 — selenium快速上手
  • BitDock——让你的Windows桌面变为Mac
  • 如何查看SQL Server的当前端口
  • filezilla mac新版本MacOS-12.6.3会自动进入全屏模式BUG解决方法
  • 我的第一个开源项目-jenkins集成k8s项目
  • 软件测试中,常用的抓包工具有哪些?抓包的原理是什么?
  • FPGA读取AHT20温湿度模块思路及实现,包含遇到的问题(IIC协议)
  • 快速部署一个鉴黄服务
  • React数据请求
  • Android 项目:画图白板APP开发(二)——历史点、数学方式推导点
  • 2.0t的涡轮增压器结构设计说明书cad【5张】设计说明说
  • OpenSatKit技术详解
  • 《Leetcode》-面试题-hot100-动态规划
  • C++实现序列匹配与分类处理
  • 深度学习-卷积神经网络CNN-批量归一化 BatchNorm
  • React和Vue
  • React 中播放HLS 视频流 ,超简单的组件高度复用
  • 2019 GPT2原文 Language Models are Unsupervised Multitask Learners - Reading Notes
  • 微美全息(WIMI.US)借区块链与聚类技术,开启物联网去中心化安全架构新纪元
  • C#WPF实战出真汁03--登录功能实现
  • 阿里云Spring Cloud架构分析
  • 无人机双目视觉设计要点概述!
  • .Net4.0 WPF中实现下拉框搜索效果
  • 4. 索引数据的增删改查
  • MyBatis Interceptor 深度解析与应用实践
  • Mybatis学习笔记(一)
  • 【密码学实战】基于SCTP的DTLS协议实验