浏览器Cookie

114 阅读3分钟

浏览器Cookie

浏览器 Cookie 是一种用于在客户端存储少量数据的机制,通常用于会话管理、个性化设置和用户跟踪。以下是关于浏览器 Cookie 的详细解析:

1. Cookie 的基本概念

(1) 定义

  • Cookie 是由服务器发送到浏览器并存储在客户端的小段数据。

  • 浏览器会在后续请求中自动将 Cookie 发送回服务器。

(2) 作用

  • 会话管理:如用户登录状态、购物车信息。

  • 个性化设置:如语言偏好、主题设置。

  • 用户跟踪:如广告定向、行为分析。

2. Cookie 的属性

(1) 名称和值

  • Name:Cookie 的名称。

  • Value:Cookie 的值。

(2) 域(Domain)

  • 作用:指定 Cookie 的有效域名。
Set-Cookie: name=value; Domain=example.com
  • 该 Cookie 对 example.com 及其子域名有效。

(3) 路径(Path)

  • 作用:指定 Cookie 的有效路径。
Set-Cookie: name=value; Path=/blog
  • 该 Cookie 仅在 /blog 路径下有效。

(4) 过期时间(Expires/Max-Age)

  • 作用:设置 Cookie 的过期时间。
Set-Cookie: name=value; Expires=Wed, 21 Oct 2023 07:28:00 GMT
Set-Cookie: name=value; Max-Age=3600
  • Expires 指定绝对时间,Max-Age 指定相对时间(秒)。

(5) 安全性(Secure/HttpOnly/SameSite)

  • Secure:仅通过 HTTPS 传输。
Set-Cookie: name=value; Secure
  • HttpOnly:禁止 JavaScript 访问。
Set-Cookie: name=value; HttpOnly
  • SameSite:限制跨站请求时发送 Cookie。
Set-Cookie: name=value; SameSite=Strict
  • Strict:完全禁止跨站请求。

  • Lax:允许部分跨站请求(如导航)。

  • None:允许所有跨站请求(需配合 Secure)。

3. Cookie 的操作

(1) 设置 Cookie

  • 服务器端:通过 Set-Cookie 响应头设置。
HTTP/1.1 200 OK
Set-Cookie: name=value; Path=/; Domain=example.com; Secure; HttpOnly
  • 客户端:通过 JavaScript 设置。
document.cookie = "name=value; Path=/; Domain=example.com; Secure; HttpOnly";

(2) 读取 Cookie

  • JavaScript
const cookies = document.cookie; // 返回所有 Cookie 字符串

(3) 删除 Cookie

  • 服务器端:设置过期时间为过去的时间。
Set-Cookie: name=; Expires=Thu, 01 Jan 1970 00:00:00 GMT
  • 客户端
document.cookie = "name=; Expires=Thu, 01 Jan 1970 00:00:00 GMT";

4. Cookie 的限制

(1) 大小限制

  • 每个 Cookie 最大 4KB。

  • 每个域名下的 Cookie 总数和总大小有限制(通常为 50 个,总大小 4KB)。

(2) 安全性问题

  • XSS 攻击:通过 JavaScript 窃取 Cookie。

    • 解决方案:设置 HttpOnly
  • CSRF 攻击:利用用户的 Cookie 发起恶意请求。

    • 解决方案:设置 SameSite

(3) 隐私问题

  • 第三方 Cookie:用于跨站跟踪用户行为。

    • 解决方案:浏览器逐步限制第三方 Cookie。

5. Cookie 的替代方案

(1) Web Storage

  • LocalStorage:持久化存储,容量较大(通常 5MB)。

  • SessionStorage:会话级存储,页面关闭后失效。

(2) IndexedDB

  • 用于存储大量结构化数据。

(3) JWT(JSON Web Token)

  • 用于无状态认证,替代传统的 Session + Cookie 方案。

总结

  • Cookie 是浏览器存储少量数据的机制,常用于会话管理和用户跟踪。

  • 属性:名称、值、域、路径、过期时间、安全性。

  • 操作:设置、读取、删除。

  • 限制:大小限制、安全性问题、隐私问题。

  • 替代方案:Web Storage、IndexedDB、JWT。

合理使用 Cookie 可以提升用户体验,但需注意安全性和隐私问题。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github