Cookie 与 Session 入门:网站是怎么记住你登录状态的?
登录一个网站,明明只输了一次账号密码,刷新页面、点开别的栏目,它却还记得你是谁;关掉浏览器再打开,又要重新登录。网站到底是怎么记住你的?答案就是最常见的两个词:Cookie 和 Session。这篇笔记只讲最核心的三件事:Cookie 是什么、Session 是什么、它们是怎么配合工作的。
一、Cookie:浏览器帮你保管的小纸条
HTTP 协议本身是“无状态”的:服务器处理完一次请求就忘了你,下一次请求对它来说就是一个陌生人。为了让网站记住你,服务器会在你第一次登录成功时,通过响应头 Set-Cookie 发给你一张“小纸条”,浏览器把它存下来。之后每次访问这个网站,浏览器都会在请求头里带上 Cookie,服务器一读就知道是你。
Cookie 存在浏览器这边,特点有三点:第一,有大小限制,一个 Cookie 通常只有几 KB;第二,可以设置过期时间,到期自动失效;第三,你可以在浏览器设置里查看甚至清空它。
二、Session:服务器那边的会话记录
如果把登录状态都写进 Cookie,任何人拿到你的 Cookie 就等于拿到了你的身份,并不安全。于是有了 Session:真正的状态存在服务器这边,浏览器只保管一个随机生成的编号,叫 Session ID。
登录成功后,服务器新建一条 Session 记录,里面保存你的用户名、登录时间等信息,并把 Session ID 放在 Cookie 里发给浏览器。之后每次请求,服务器用 Session ID 查到对应的记录,就确认了你的身份。
三、它们是怎么配合工作的
一次登录的完整流程是这样的:
- 你输入账号密码提交登录;
- 服务器验证通过,新建 Session,并把 Session ID 写进 Cookie 返回;
- 浏览器保存这个 Cookie,之后每次请求都自动带上它;
- 服务器根据 Session ID 找到会话记录,确认你已经登录;
- 你退出登录或 Session 过期后,这张“通行证”就失效了。
四、一句话记住它们的区别
| 对比 | Cookie | Session |
|---|---|---|
| 存在哪里 | 浏览器(客户端) | 服务器端 |
| 存什么 | 少量数据,常用来存 Session ID | 用户的登录状态等会话数据 |
| 安全性 | 相对较低,别存密码等敏感信息 | 相对较高,数据不经过浏览器 |
| 失效方式 | 到期自动失效,也可手动清空 | 超时未活动或退出登录后失效 |
再补充两条安全习惯:给 Cookie 加上 HttpOnly,能防止前端脚本读取它,降低被盗用的风险;重要的站点尽量走 HTTPS,避免 Cookie 在传输中被截获。
一句话总结:Cookie 是浏览器替你保管的“通行证编号”,Session 是服务器那边对照编号的“登记表”,两者配合,网站才能在一次登录后一直记得你。
- 点赞
- 收藏
- 关注作者
评论(0)