Cookie
1. 简介
Cookie 是服务器提供的一种用于维护会话状态信息的数据,通过服务器发送到浏览器,浏览器保存在本地;当下一次有同源的请求时,将保存的 cookie 值添加到请求头部发送给服务端。这可以用来实现记录用户登录状态等功能。
Cookie 一般可以存储 4KB 大小的数据,只能被同源的网页共享访问。
服务器端使用 Set-Cookie 响应头配置 cookie 信息。一条 Cookie 包括 9 个属性值:
| 属性 | 说明 |
|---|---|
name / value | Cookie 的名字和值 |
expires | Cookie 失效时间 |
domain | 域名 |
path | 路径 |
secure | 只在确保安全的情况下传输(HTTPS) |
HttpOnly | 只能被服务器访问,不能用 JS 访问 |
SameSite | 限制第三方 cookie,防止 CSRF 攻击 |
Priority | Chrome 提案,定义 cookie 优先级(低优先级 cookie 在超限时优先清除) |
在跨域 XHR 请求中,即使是同源下的 cookie,也不会被自动添加到请求头,除非显式设置
withCredentials或服务器明确允许。
2. 创建 Cookie
document.cookie = 'username=John Doe';
设置过期时间(格式要求 GMT):
const date = new Date();
date.setTime(date.getTime() + expireHours * 3600 * 1000);
document.cookie = 'username=John; expires=' + date.toGMTString() + '; path=/';
path告诉浏览器 cookie 的路径,默认属于当前页面。
3. 删除 Cookie
将过期时间设置为过去(前一毫秒)即可:
const date = new Date();
date.setTime(date.getTime() - 1);
document.cookie = 'username=John Doe; path=/; expires=' + date.toGMTString();
4. 安全建议
- 敏感信息(session token)务必设置
HttpOnly和Secure。 - 用
SameSite=Lax或Strict减少 CSRF。 - Cookie 易被窃取 / 伪造,敏感操作不要只依赖 Cookie。
现代前端通常使用 HttpOnly Cookie 存 session token,前端通过自定义 Header 携带 token,避免 XSS 窃取。
来源整理自:我的有道云笔记



