当前位置: 首页 > news >正文

BOM Cookie操作详解

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

核心API与用法

1. 读取所有Cookie

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

2. 设置Cookie

// 设置一个简单的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

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

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

5. 删除Cookie

// 通过设置过期时间为过去来删除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

4. Cookie vs localStorage

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

5. 使用场景

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

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

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

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

6. 注意事项

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

  • 设置合理的过期时间

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

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

http://www.dtcms.com/a/315620.html

相关文章:

  • 基于Halcon 3D的手眼标定方法
  • Kafka自动消费消息软件(自动化测试Kafka)
  • OneCode 3.0 前端架构全面研究
  • xxl-job配置相同,执行顺序
  • Android WiFi图标显示感叹号解决方法
  • Linux 线程同步与互斥
  • 链表之leetcode19:删除链表的倒数第N个结点
  • LeetCode 71~90题解
  • 危化品运输误检率↓83%!陌讯多模态融合算法在油罐车识别的工程实践
  • 机器学习③【模型训练、K近邻算法(KNN)、贝叶斯算法(Navie Bayes)、模型调优】
  • 基于 Ubuntu 的 Linux 系统中 Vivado 2020.1 下载安装教程
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • Qwen Image:开源中文渲染SOTA,重塑文生图技术边界
  • Spring Boot 整合 Web 开发全攻略
  • 机器学习Adaboost算法----SAMME算法和SAMME.R算法
  • AI+OA原生应用 麦当秀AIPPT
  • Day34 GPU训练及类的call方法
  • 【ESP32学习笔记】环境搭建和HelloEsp32
  • GPS信号捕获尝试
  • C++ - 基于多设计模式下的同步异步日志系统(11w字)
  • 深入 Java 性能调优:一场没有枪声的实战旅程
  • 自然语言处理×第三卷:文本数据分析——她不再只是贴着你听,而开始学会分析你语言的结构
  • css3属性总结和浏览器私有属性
  • GPT-5的诞生之痛:AI帝国的现实危机
  • Dubbo-Go调Bug记录-泛化调用调不通
  • 软件测试中,pytest 框架如何运行上传失败的测试用例?
  • AWS EKS节点扩容时NLB与Ingress的故障处理与优化方案
  • Linux 系统启动原理2
  • 基于Hadoop的成都市二手房数据分析与房价预测系统的设计与实现
  • C++(线程)