session、cookie、token的区别
核心区别:Session 是服务端存储的用户会话数据,Cookie 是客户端(浏览器)存储的小型文本数据,Token 是服务端生成的、客户端携带的身份凭证,无需服务端存储会话。
- 存储位置与主体
Session(会话):存储在服务端(如服务器内存、数据库),由服务端创建和管理,每个用户对应一个唯一 Session ID。
Cookie:存储在客户端(浏览器本地文件或内存),由服务端通过响应头下发,客户端后续请求会自动携带。
Token(令牌):存储在客户端(如浏览器 localStorage、移动端缓存),由服务端生成后返回给客户端,客户端需手动在请求头/参数中携带。 - 工作原理
Session:1). 用户登录后,服务端生成唯一 Session ID,并存入用户信息(如账号、权限);
2). 服务端将 Session ID 通过 Cookie 下发给客户端;
3). 客户端后续请求携带该 Cookie,服务端通过 Session ID 查询对应的会话数据,确认身份。
Cookie:1). 服务端通过 Set-Cookie 响应头,向客户端发送键值对数据(如 user=xxx; expires=xxx );
2). 客户端按规则存储(可设置过期时间、域名、路径),后续请求自动在 Cookie 请求头中携带该数据;
3). 服务端读取 Cookie 数据,实现状态记录(如记住登录、购物车)。
Token:1). 用户登录时,服务端验证账号密码后,生成加密 Token(如 JWT 格式,包含用户信息和过期时间);
2). 客户端存储 Token,后续请求通过 Authorization: Bearer Token 等方式携带;
3). 服务端接收 Token 后,直接解密验证有效性(无需查询存储),确认身份。 - 关键特性对比
特性
Session 安全性较高(数据在服务端) ,跨域支持 差(依赖 Cookie 跨域限制),服务端压力 大(需存储会话数据),过期控制 服务端主动销毁/超时
Cookie 较低(易被篡改、窃取) ,差(受浏览器跨域策略限制),小(数据在客户端),客户端按 expires 过期
Token 中高(加密,无服务端存储) ,好(可手动携带,无跨域限制),小(无需存储,仅验证),客户端丢弃/服务端验证过期时间

浙公网安备 33010602011771号