Cookie、Session、Token的区别

区别

Cookie、Session和Token是用于身份验证和用户状态管理的不同机制。它们在Web应用程序中的使用有一些关键区别:

  1. Cookie(HTTP Cookie):

    • Cookie是一种客户端存储数据的机制,通常是一个小的文本文件,Key和Value的字符串格式。
    • 服务器可以通过HTTP响应的Set-Cookie头将Cookie发送给客户端浏览器,然后浏览器将Cookie保存并在后续请求中自动包含在Cookie头中。
    • Cookie通常用于跟踪用户会话、存储用户首选项和其他客户端相关的数据。
    • Cookie可以设置过期时间,可以是会话级别的(浏览器关闭后失效)或持久的(在指定过期日期之前有效)。
    • Cookie是与域名绑定的,无法跨域访问,但可以在一级域名和二级域名之间共享。同时,浏览器对每个域名下的Cookie数量有限制(单个Cookei大小4KB)。跨域数据共享通常需要使用其他机制,如CORS。这些规则和限制有助于确保用户隐私和安全。
  2. Session(会话):

    • 会话是服务器端的机制,用于跟踪和管理用户状态。
    • 会话通常使用Cookie或URL参数来维护一个唯一的会话标识符(Session ID),该标识符关联到服务器端存储的用户数据。
    • 会话允许服务器存储和检索与特定用户相关的数据,以保持用户的身份认证状态和其他用户特定的信息。
    • 会话数据通常存储在服务器内存、数据库或分布式缓存中,因此对于服务器来说是可控的。
    • Session和Cookie是协同工作的。Session存储在服务器端,但Session ID 存储在客户端的Cookie中,通过Session ID,服务器可以识别和恢复与特定用户相关的会话数据。
  3. Token(令牌):

    • 令牌通常是一串长字符串,用于身份验证和授权。

    • 令牌通常使用一种独立于会话状态的机制来实现,如JSON Web Tokens(JWT)。

    • 令牌通常包含有关用户身份的信息,可以包括用户ID、权限、过期时间等。

    • 令牌通常在客户端和服务器之间传递,并用于授权访问受保护的资源,如API端点。

对比

Cookie Session Token
数据存储 客户端存储 服务器端生成 服务器端生成
认证授权 保存用户数据 跟踪用户状态和保存用户数据 身份验证和授权
跨域支持 不支持 不支持 支持

(本文完)


Cookie、Session、Token的区别
https://maojun.xyz/blog/2023/11/Cookie、Session、Token的区别.html
作者
毛 俊
发布于
2023年11月5日
许可协议