Cookie、Session和Token有什么区别?Cookie解析时要看哪些字段
从登录态和接口鉴权角度解释Cookie、Session、Token的区别,并介绍Cookie解析和排查登录问题的方法。
相关工具
Cookie是什么
Cookie是浏览器保存的一小段键值数据,通常由服务器通过Set-Cookie响应头写入,之后浏览器访问同一站点时会自动带上。它常用于登录态、偏好设置、统计标识、灰度实验等场景。Cookie本身只是存储和传输机制,不等于登录系统。
Cookie里可能存Session ID,也可能存Token或其他标识。调试时要看Cookie的名称、值、Domain、Path、Expires或Max-Age、HttpOnly、Secure、SameSite等属性。这些属性决定它能不能被浏览器保存、是否会跨路径发送、是否只能HTTPS传输。
Session和Token有什么不同
Session通常表示服务端保存登录状态,浏览器Cookie只保存一个Session ID。服务器拿到Session ID后,到内存、Redis或数据库中查用户状态。Token则更常见于前后端分离接口,服务器签发一个令牌,客户端保存后在请求中带上,服务端通过签名或存储校验身份。
Session适合传统网站,服务端控制强;Token适合接口和多端应用,但要注意过期时间、刷新机制和泄露风险。JWT是一种常见Token格式,但并不是所有Token都是JWT。Cookie也可以存Token,Authorization Header也可以传Token。
Cookie解析时重点看什么
第一看Cookie是否真的被浏览器带上。开发者工具Network里可以查看请求头Cookie字段。第二看Domain和Path是否匹配当前请求。第三看Secure属性,如果设置了Secure,HTTP请求不会携带。第四看SameSite,如果跨站请求需要带Cookie,SameSite配置可能影响很大。
第五看HttpOnly。设置HttpOnly后,前端JavaScript无法读取该Cookie,这是安全设计,不是异常。第六看过期时间。登录突然失效,可能是Cookie过期,也可能是服务端Session过期。工具帮的Cookie解析工具可以把长Cookie请求头拆成清晰键值,方便排查。
登录态排查建议
遇到登录后仍然提示未登录,先确认请求域名是否一致,再确认Cookie是否发送,最后看服务端是否识别。跨域接口尤其容易出现问题,需要同时检查前端withCredentials、服务端CORS、Cookie的SameSite和Secure。
安全上不要把敏感信息明文塞进Cookie。即便是Token,也应设置合理过期时间,使用HTTPS传输,并避免被日志、截图或第三方脚本泄露。调试时复制Cookie给别人非常危险,等同于把登录状态交出去。
落地检查和使用建议
上线项目还要注意Cookie安全属性。登录相关Cookie通常应设置HttpOnly降低脚本窃取风险,设置Secure保证只在HTTPS下传输,并根据跨站需求合理设置SameSite。不同属性组合会直接影响登录态是否稳定。
如果网站未来接入广告、统计或第三方脚本,隐私政策中也应说明Cookie和类似技术的使用目的。技术配置和合规说明要同步考虑,尤其是面向公开用户的网站。
常见问题
Cookie和Session是同一个东西吗?
不是。Cookie在客户端保存,Session通常在服务端保存,Cookie可用来传Session ID。
HttpOnly导致前端读不到Cookie正常吗?
正常,这是为了防止脚本窃取Cookie。
Token放Cookie还是Header更好?
取决于架构和安全策略。浏览器网站常用Cookie,开放接口常用Authorization Header。