1. 什么是 Cookie?
Cookie 是存储在用户浏览器中的小型文本数据,通常用于保存用户会话信息、个性化设置以及跨页面的数据共享。它是 Web 服务器与客户端浏览器之间的一种状态管理机制,常用于爬虫的会话凭证。
查看方式:打开网站-登录-打开开发正工具-点击网络-刷新-点击一个包-查看表头(有的需要禁用缓存才能看见)
2. Cookie 的作用
会话管理:如用户登录状态的保持。个性化设置:存储用户偏好,如主题、语言等。跟踪与分析:用于广告投放、用户行为分析。
3. Cookie 的工作原理
服务器端发送 Cookie
服务器在 HTTP 响应头中添加 Set-Cookie 字段,将 Cookie 发送到浏览器。
浏览器存储 Cookie
浏览器收到 Cookie 后会根据属性存储它,并在后续请求时携带相应的 Cookie。
浏览器向服务器发送 Cookie
之后的请求中,浏览器会在 Cookie 头中附加相关的 Cookie。
示例:
HTTP/1.1 200 OK
Set-Cookie: username=JohnDoe; Path=/; HttpOnly
后续请求中,浏览器会自动携带:
GET /profile HTTP/1.1
Cookie: username=JohnDoe
4. Cookie 的属性
Expires / Max-Age:指定 Cookie 的有效期。Domain:指定 Cookie 适用的域名。Path:指定 Cookie 的作用路径。Secure:仅在 HTTPS 连接下传输。HttpOnly:防止 JavaScript 访问 Cookie,提高安全性。SameSite:控制跨站请求的 Cookie 发送行为,可选 Strict、Lax、None。
示例:
Set-Cookie: sessionId=abc123; Path=/; Secure; HttpOnly; SameSite=Lax
5. JavaScript 操作 Cookie
读取 Cookie
console.log(document.cookie);
设置 Cookie
document.cookie = "username=JohnDoe; path=/; max-age=3600";
删除 Cookie
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
6. 安全性考虑
使用 HttpOnly 防止 XSS 窃取 Cookie使用 Secure 确保 Cookie 仅通过 HTTPS 传输合理设置 SameSite 以防止 CSRF 攻击不要存储敏感信息,如密码,推荐使用 Token 进行身份验证
7. 结论
Cookie 在 Web 开发中至关重要,了解其原理、使用方法以及安全性设置,可以有效地管理用户会话和数据存储,同时提升应用的安全性。