Cookie
Cookie 是网站让浏览器保存的一小段数据,浏览器会在符合条件的后续请求中带上它。因为 HTTP 请求本身不会记住上一次访问,所以网站常用 Cookie 传递会话标识,让你登录后切换页面仍保持登录。
你可能会说:「我做的网站登录后,一刷新就变成未登录了,能让浏览器记住登录状态吗?」
动手看看登录后切换页面
你在网站登录页提交账号和密码,浏览器把登录请求发给服务器。
要点Cookie 怎样让网站记住你?
- 1
浏览器替网站保存数据
登录成功后,服务端可以在响应中设置 Cookie。浏览器保存它,再访问符合条件的地址时,就会把它附在请求里。这样服务端能认出这次请求属于哪个会话,而不是每打开一页都让你重新登录。
- 2
保存的是标识不是登录结论
常见做法是把会话标识放进 Cookie,真正的登录状态由服务端核对。因为浏览器里的内容可能被用户修改,所以服务端不能只凭 Cookie 里写着“已登录”就放行。
- 3
发送范围和有效期可以控制
Cookie 可以限定适用的域名、路径和有效期。你排查“登录后某个页面仍未登录”时,可以先看浏览器有没有保存 Cookie,再看请求地址是否落在它的发送范围内。
- 4
安全设置影响读取和发送
用于登录的 Cookie 通常会设置 HttpOnly,减少被页面脚本读取的机会;Secure 让它只随 HTTPS 请求发送;SameSite 则影响跨站请求是否携带它。这些设置各管一件事,不能代替服务端的身份验证。
容易混淆的地方
Cookie 是浏览器随符合条件的请求发送的数据;浏览器本地存储也能保存数据,但不会自动附在请求中。会话则是服务端识别并维持一次登录或访问状态的方式:Cookie 常用来传会话标识,却不等于会话本身。
什么时候用
适合用
- 做网站登录:让浏览器在后续页面请求中带上会话标识,服务端据此查询登录状态。
- 做后台管理系统:用 Cookie 关联当前管理员的会话,让多个页面共用登录状态。
- 保存少量网站偏好:例如记住用户选择的界面语言,并在后续请求中供服务端读取。
不适合用
- 做移动 App 的原生接口调用,不依赖浏览器自动携带数据时,可以按接口设计使用请求头传递凭证。
- 保存大量草稿或离线文件时,Cookie 容量有限且可能随请求发送;改用适合的浏览器存储或服务端存储。
- 只是要在当前页面的组件间传递临时状态时,用应用状态即可,不必让它随网络请求发送。
练一练选一个答案,看看解释
你做了一个网站:用户登录成功后能看到账户页,但刷新账户页就变成未登录。你会先让 AI 检查什么?
让 AI 帮你做复制给 AI Agent 直接用
请检查这个网站的登录流程是否正确使用 Cookie 传递会话标识:登录响应是否设置了 Cookie,刷新页面的请求是否携带它,服务端是否核对会话。请说明发送范围、有效期及 HttpOnly、Secure、SameSite 的当前设置,并指出导致刷新后掉线的原因。