一文读懂 Cookie、Session 和 Token:原理、区别与应用场景
Last updated on July 1, 2025 pm
一文读懂Cookie、Session和Token:原理、区别与应用场景
咱上网冲浪的时候,天天和各种网站、APP打交道。但HTTP协议有个“毛病”——它记性不好,每次请求都像第一次见面,根本不记得之前和你聊过啥。为了解决这个问题,程序员们整出了Cookie、Session和Token这三个“神器”,它们就像我们在网络世界的身份证、通行证,帮服务器记住你是谁,都干了啥。今天咱就唠唠这仨到底是干啥的,有啥不一样!
一、Cookie、Session和Token都干啥用?
1.1 Cookie:浏览器帮你记事儿的小本本
Cookie就是服务器给浏览器塞的小纸条,存的都是些用户信息,像登录状态、浏览偏好啥的。举个例子,你第一次进某个网站,选了中文界面、深色模式,下次再访问,网站秒变你喜欢的样子,这背后就是Cookie在偷偷“记笔记”。不过这小纸条存你电脑里,容易被人偷看,所以得小心点用!
1.2 Session:服务器的专属“私人档案库”
Session相当于是服务器自己的“小账本”,专门用来存用户的会话数据。当你登录网站,服务器就给你开个“档案袋”,把你购物车有啥、订单到哪一步了这些信息全塞进去。但它咋知道这份档案归谁呢?靠的就是Cookie里的Session ID,相当于档案编号,浏览器每次带着编号来,服务器一看就知道:“哦!原来是你!”
1.3 Token:万能通行令牌
Token就是服务器发的一串乱码“令牌”,你拿着它去访问网站的各种服务,就像拿着身份证证明“我是我”。Token最大的好处是不用服务器记太多东西,你每次来,它只需要验证令牌是真是假就行。现在流行的前后端分离、第三方登录,基本都靠Token“打天下”,移动端APP更是离了它不行。
二、Cookie、Session和Token,到底咋区分?
2.1 都藏在哪?能存多少东西?
Cookie就住你电脑里,浏览器帮你保管。不过它个头很小气,一般不能超过4KB,而且一个网站最多也就存50个左右。
Session住在服务器那边,理论上想存多少存多少,但服务器空间有限,存太多也顶不住。
Token呢,既可以放在客户端(比如APP里),也能在每次请求的时候跟着一起“跑”,大小没严格限制,通常几百字节。
2.2 安不安全?容易被偷吗?
Cookie因为在客户端,就像放在桌子上的纸条,很容易被人篡改。不过可以给它加把锁:
HttpOnly
让JavaScript读不到它Secure
保证它只在安全的HTTPS通道里传送SameSite
防止被别人“冒名顶替”发请求
Session数据在服务器,相对安全些,但要是Session ID被坏人搞到手,也能冒充你。
Token用签名加密,一般改不了,但一旦被偷,坏人也能用,所以得设个有效期,到期就作废。
2.3 怎么在网络里“传送”?
- Cookie最“自觉”,浏览器每次发请求,都会自动把相关的Cookie带上,除非你特意限制它。
- Session得靠Cookie帮忙传递Session ID,虽然也能藏在URL里,但容易暴露,不太安全。
- Token就比较“自由”,常见的是放在请求头的
Authorization
字段里,也能塞到请求体或URL里,全看开发者咋安排。
2.4 能用多久?啥时候过期?
- Cookie想“活”多久,由服务器说了算。设置了
expires
或max-age
,它就是“长寿型”,到期才失效;不设置的话,浏览器一关,它就“凉凉”。 - Session和Cookie里的Session ID绑在一起,服务器还会设个“闲置超时”,比如30分钟没操作,直接清空档案。
- Token出生的时候就被定好了“保质期”(像JWT的
exp
字段),过期就得重新申请新令牌。
2.5 能不能适应复杂的网络环境?
要是网站用的是分布式系统(多个服务器协同工作),Cookie + Session组合就有点“吃力”。因为Session存在服务器里,多个服务器之间得同步数据,不然容易“认不出”用户。
Token就没这烦恼,它不需要服务器存啥,验证一下令牌是真是假就行,特别适合微服务、跨域这种复杂场景。
三、生活里都在哪见过它们?
3.1 Cookie的“日常工作”
- 刷新闻的时候,为啥总给你推爱看的内容?Cookie在“搞事情”!它记住了你的兴趣标签。
- 还有电商网站没登录时加进购物车的商品,也是Cookie临时存着。不过拿Cookie做广告追踪得小心,一不小心就违反隐私规定了。
3.2 Session的“用武之地”
电商平台的购物车、订单状态,后台管理系统的用户权限,在线聊天的实时状态……这些对安全性、实时性要求高的场景,都是Session的主场。服务器随时能查看、修改你的会话数据,还能强制你下线,安全感拉满!
3.3 Token的“高光时刻”
- 现在很多网站支持微信、GitHub一键登录,靠的就是Token在不同平台间“传话”。
- 前后端分离项目里,前端和后端不在一个域名下,Token能轻松实现跨域认证。
- 还有手机APP,没Cookie可用,Token就是它唯一的“身份认证官”。
四、到底该选谁?
简单来说:
- Cookie适合存点小偏好、临时数据
- Session适合对安全要求高、需要集中管理的场景
- Token则是跨域、移动端、微服务的“心头好”
实际开发中,大家经常把它们搭配着用,比如用Cookie传Session ID,或者把Token藏在Cookie里,增强安全性。具体咋选,还得根据业务需求,综合考虑安全、性能这些因素,找到最适合的方案!
要是你对哪个部分还有疑问,或者想知道更多实战技巧,欢迎随时来唠嗑!