Skip to content
DAILY QUOTE

“ ”

HTTP协议及无状态特性

  • HTTP是无状态协议,服务器无法记忆前一次访问用户身份。
  • 每次访问服务器时,服务器无法判断是否为同一用户,因此需要借助额外技术来维持登录状态。

登录状态依赖于存储技术,常见方式为保存用户名密码或通过cookie实现自动登录。

  • Cookie:是一种存储在浏览器端的小型文本文件,用于记录用户信息,解决HTTP无状态的问题。但直接存储用户名和密码存在安全风险。
    • 实现:服务器通过Set-Cookie指令向浏览器发送cookie,浏览器保存后每次请求自动带上cookie。
  • Session:Session是服务器创建的唯一ID,存储在服务器端,客户端只保存Session ID。
    • 优点:Session ID通常为无规律的字符串,服务器通过Session管理用户登录状态,避免直接暴露用户信息。Session通过cookie传递Session ID,增强安全性  - JWT:一种基于Token的身份验证机制,Token由Header、Payload和Signature三部分组成。服务器无需保存Token,只需保存签名密文,减轻了服务器的存储压力。  - 优点:JWT通过签名保障数据完整性,客户端持有Token,每次请求携带Token实现认证。相比Session,减轻服务器存储压力,更适合分布式环境

安全性: Cookie直接存储敏感信息存在安全隐患,Session ID相对安全,但仍需防范被盗用。JWT通过签名保证Token的完整性,但Base64编码并非加密,Payload信息容易被解码。

应用场景: Cookie和Session适用于单服务器架构,JWT更适用于分布式系统和移动应用,可以减轻服务器的存储压力,并支持跨域身份验证。#应用场景

总结

Session由服务器创建和管理,Cookie作为存储载体,Token由客户端保存和使用。 三者配合实现现代Web应用的用户认证与状态保持。Session安全但需服务器存储,Token适合分布式且由客户端掌控,Cookie负责传递相关信息。