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)存储非敏感数据

相关推荐
sunshine22 girl30 分钟前
Java学习六 Java常见API-1-Radom随机数
java·开发语言·学习
可乐鸡翅yeah_33 分钟前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒1 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
潼心1412o1 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法
广州华水科技1 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
夜晚回家1 小时前
Python 零基础入门 | 输入的数字为什么不能直接算
开发语言·python
时间的拾荒人1 小时前
Qt 事件机制全解析:从事件处理到事件过滤器
开发语言·qt·面试
于指尖飞舞1 小时前
java面试题总结
java·开发语言
yivifu2 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub
weixin_448290252 小时前
书庐开发实战教学
javascript·css·html