BOM Cookie操作详解

Cookie是浏览器存储数据的一种机制,主要用于存储会话信息、用户偏好设置等。下面我将详细讲解Cookie的操作方法,并提供可视化示例。

核心API与用法

1. 读取所有Cookie

javascript 复制代码
// 获取当前页面所有Cookie(字符串形式)
const allCookies = document.cookie;
console.log(allCookies); 
// 输出: "name=value; name2=value2; ..."

2. 设置Cookie

javascript 复制代码
// 设置一个简单的Cookie
document.cookie = "username=JohnDoe";

// 设置带过期时间的Cookie(UTC时间)
document.cookie = "token=abc123; expires=Fri, 31 Dec 2025 23:59:59 GMT";

// 设置带路径的Cookie
document.cookie = "preference=dark; path=/settings";

// 设置带域名和Secure标志的Cookie
document.cookie = "sessionId=xyz789; domain=example.com; Secure";

3. 读取特定Cookie

javascript 复制代码
function getCookie(name) {
  const cookies = document.cookie.split(';');
  for (const cookie of cookies) {
    const [cookieName, cookieValue] = cookie.trim().split('=');
    if (cookieName === name) {
      return decodeURIComponent(cookieValue);
    }
  }
  return null;
}

console.log(getCookie("username")); // 输出: "JohnDoe"

4. 更新Cookie

javascript 复制代码
// 更新Cookie的值(需要相同名称、路径和域名)
document.cookie = "username=JaneDoe";

5. 删除Cookie

javascript 复制代码
// 通过设置过期时间为过去来删除Cookie
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

关键概念说明

1. Cookie的作用域

  • Domain: 指定哪些主机可以访问Cookie(默认为当前主机)

  • Path: 指定URL路径前缀(默认为当前路径)

  • SameSite: 控制跨站请求时Cookie的发送(Strict/Lax/None)

2. 安全属性

  • Secure: 只能通过HTTPS协议传输

  • HttpOnly: 防止XSS攻击(JavaScript无法访问)

  • SameSite: 防止CSRF攻击

3. 存储限制

  • 每个域名下的Cookie数量有限(通常50个左右)

  • 每个Cookie大小有限(通常4KB左右)

  • 超出限制时浏览器可能删除旧Cookie或拒绝新Cookie

特性 Cookie localStorage
存储大小 4KB 5-10MB
过期时间 可设置 永久
自动发送 每次请求自动发送 不自动发送
访问方式 前端JS和后端均可访问 仅前端JS访问
适用场景 会话管理、用户认证 长期存储本地数据

5. 使用场景

  1. 用户身份认证(Session管理)

  2. 个性化设置(主题、语言等)

  3. 跟踪用户行为(分析、广告等)

  4. 保存表单数据(防止意外关闭)

6. 注意事项

  • 避免存储敏感信息(如密码)

  • 设置合理的过期时间

  • 使用HttpOnly和Secure标志增强安全性

  • 考虑使用更现代的存储方案(如localStorage)存储非敏感数据

相关推荐
养鱼的程序员2 分钟前
零基础搭建个人网站:从 Astro 框架到 GitHub 自动部署完全指南
前端·后端·github
罗行5 分钟前
手写防抖和节流
前端·javascript
前端老鹰5 分钟前
CSS :is () 与 :where ():简化复杂选择器的 “语法糖”
前端·css·html
颜酱10 分钟前
理解并尝试vue3源码的reactivity
前端·javascript·vue.js
苏州第一深情18 分钟前
【uniapp】uniapp实现单点登录、打包H5部署到线上
javascript·vue.js·uni-app
拉不动的猪18 分钟前
jS篇Async await实现同步效果的原理
前端·javascript·面试
杨充22 分钟前
03.接口vs抽象类比较
前端·后端
chxii34 分钟前
2.4 组件通信
前端·javascript·vue.js
Entropy-Lee39 分钟前
JavaScript 执行上下文与作用域
开发语言·javascript·ecmascript
Hello.Reader1 小时前
Rust + WebAssembly 上线实战指南
开发语言·rust·wasm