知行手记首页

Token、Session、Cookie、JWT、OAuth 区别

分类技术笔记
Cookie:浏览器端存储载体 - Session:会话数据放服务端,cookie存id - JWT:会话数据加密放客户端,服务端无状态 - Token:身份凭证统称 - OAuth:第三方授权标准
Token、Session、Cookie、JWT、OAuth 区别
## Cookie 浏览器存储的数据,由后端通过`Set‑Cookie`响应头下发,后续请求浏览器会自动带上。 关键安全配置: 1. `httpOnly`:JS读不到,防XSS偷凭证 2. `secure`:只在HTTPS下传输,**生产环境要开,开发环境关掉** 3. `sameSite`:防CSRF,兼顾跨页跳转 4. `maxAge`:过期时间,单位毫秒,例1小时:`3600*1000` 5. 单条上限4KB Node常用包:`cookie‑parser@1.4.7` 后端设置示例: ```js res.cookie('session_id', sessionId, { maxAge: 3600 * 1000, httpOnly: true, secure: false, sameSite: 'lax', path:'/' }) ``` ## Session 数据**存在服务端**,Cookie只存一个`session_id`标识。 流程:用户登录→后端生成session存用户数据,把session_id放进Cookie返回;之后请求浏览器自动带上cookie,后端拿session_id去查服务端用户信息。 > 多服务器集群部署:需要Redis共享session,但会有性能瓶颈。 ## JWT 为解决集群session共享问题,去中心化方案:把用户信息加密签名后直接放客户端(存Cookie里),服务端不用存会话。 JWT Token三段结构: 1. 头部:加密算法、类型 2. 载荷:业务会话数据 3. 签名:校验有没有被篡改 ⚠️ JWT可以被解码,**不能放敏感信息**。 > 把JWT放进Cookie的好处:浏览器请求自动携带token,不用前端手动处理;配合`httpOnly`还能避免JS窃取。 ## Token 泛指身份凭证,JWT就是Token的其中一种实现。 ## OAuth 第三方授权登录协议,比如微信、Github登录这类场景。 ### 简单区分 - Cookie:浏览器端存储载体 - Session:会话数据放服务端,cookie存id - JWT:会话数据加密放客户端,服务端无状态 - Token:身份凭证统称 - OAuth:第三方授权标准 要不要用工作任务模式,把这些整理成一份可预览的网页笔记?

以文字记录成长,以良知安顿内心

© 2026 知行手记