• Cookie、Session、Token的关系和区别


    关系

    • Session与Cookie:Session通常依赖于Cookie来工作。当服务器为客户端创建一个Session时,它会在服务器上存储与客户端相关的信息,并将一个唯一的SessionID通过Cookie发送给客户端。客户端在后续的请求中会携带这个Cookie(包含SessionID),以便服务器能够识别并恢复与该客户端的Session。
    • Token与Session/Cookie:Token也是一种身份验证机制,但它不依赖于服务器端的Session或客户端的Cookie。相反,Token本身包含了所有必要的用户信息和验证信息,客户端在每次请求时都需要将Token发送给服务器进行验证。

    区别

    Cookie
    • 存储位置:客户端。
    • 内容:通常以字符串的形式存储一些数据,如用户ID、SessionID等。
    • 特点
      • 按照域名存储。
      • 存储大小有限制,通常约为4KB或50条左右。
      • 具有时效性,可以手动设置。
      • 请求自动携带,即当客户端向服务器发送请求时,会自动将Cookie包含在请求头中。
    Session
    • 存储位置:服务器端。
    • 内容:可以理解为一个状态列表或用户信息档案表,包含用户的认证信息和登录状态等。
    • 特点
      • 依赖于Cookie或URL重写来传递SessionID。
      • 当同时登录的用户数量较多时,可能导致服务器查询变慢。
      • 用于解决HTTP协议无状态的问题。
    Token
    • 存储位置:客户端(通常在localStorage、sessionStorage或Cookie中)。
    • 内容:通常是一个包含用户信息、过期时间和签名的字符串。
    • 特点
      • 无状态,即不依赖于服务器端的Session。
      • 加密存储用户信息,安全性更高。
      • 需要开发者手动添加和验证。
      • 在区块链技术中,Token可以代表数字资产、实物资产、虚拟资产或特定权益等。

    总结

    • Cookie 主要用于在客户端存储少量数据,并自动包含在请求头中发送给服务器。
    • Session 存储在服务器端,用于跟踪用户状态,并依赖于Cookie或URL重写来传递SessionID。
    • Token 是一种无状态的身份验证机制,客户端在请求时携带Token进行身份验证,具有更高的安全性和灵活性。
  • 相关阅读:
    机器视觉检测--相机
    14:00面试,14:06就出来了,问的问题有点变态。。。
    软件配置 | mac M1 上 imagemagick 的安装
    Docker安装Rabbitmq
    Mybatis 在 insert 插入操作后如何返回主键 id
    设计模式 | 简单工厂模式
    小美的排列构造
    c++征途 --- 函数
    竞赛选题 基于深度学习的目标检测算法
    腾讯小程序音视频 TRTC live-pusher 黑屏等各种问题
  • 原文地址:https://blog.csdn.net/Nove1205/article/details/139731293