- Cookie:存储在客户端(浏览器或APP本地),主要用来存用户标识(比如Session ID)和少量非敏感数据,比如记住登录状态、保存购物车。安全性较低,容易被窃取(如XSS攻击),数据量通常不超过4KB,由服务器通过 Set-Cookie 指令创建,浏览器会自动在请求时携带。
- Session:存储在服务器端(内存、数据库等),核心是保存用户完整会话信息,比如登录状态、权限等。安全性较高,因为敏感信息只在服务器端,客户端仅传递Session ID。典型用于网站后台登录会话、敏感操作验证,但服务器压力会随用户量增加而增大。
- Token:存储在客户端(存储方式类似Cookie,也可放URL),本质是“身份令牌”,自身包含用户身份信息,通过加密签名保证有效性,无需服务器存储会话。安全性较高,支持跨域,适合移动端APP、前后端分离项目和第三方登录(如OAuth2.0)场景。
一句话总结:Cookie是“身份证复印件”存用户手里,Session是“身份证原件”存派出所,Token是“电子身份证”自带防伪可全网通用。