Cookie 与 localStorage_浏览器存储机制全解析

devtools/2025/2/25 6:02:43/

1. 引言

在现代 Web 开发中,浏览器存储机制是不可或缺的一部分。无论是保存用户偏好、会话信息还是缓存数据,选择合适的存储方式对于提升用户体验和应用性能至关重要。本文将深入探讨两种常见的浏览器存储机制:CookielocalStorage。我们将详细介绍它们的基本概念、应用场景、区别以及最佳实践,帮助您更好地理解和使用这些技术。

Cookie__5">2. Cookie 基础

Cookie_7">2.1 什么是 Cookie

Cookie 是一种在用户浏览器上存储少量数据的技术,通常用于保存会话信息、用户偏好等。每个 Cookie 都有一个名称和一个值,并且可以附加一些属性来控制其行为。Cookie 的数据会在每次 HTTP 请求时自动发送到服务器,因此它非常适合用于需要与服务器交互的场景。

Cookie__11">2.2 Cookie 的属性和设置方法

Cookie_13">设置和读取 Cookie

Cookie 可以通过 document.cookie 属性进行设置和读取。下面是一些常见的操作示例:

  • 设置 Cookie

    // 设置一个简单的 Cookie
    document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";// 设置带有多个属性的 Cookie
    document.cookie = "sessionToken=abc123; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/; domain=.example.com; secure; HttpOnly";
    
  • 读取 Cookie

    // 读取所有 Cookie
    console.log(document.cookie); // 输出: username=JohnDoe; sessionToken=abc123// 解析特定的 Cookie
    function getCookie(name) {const value = `; ${document.cookie}`;const parts = value.split(`; ${name}=`);if (parts.length === 2) return parts.pop().split(';').shift();
    }console.log(getCookie("username")); // 输出: JohnDoe
    

Cookie__45">Cookie 属性详解

  • expires: 指定 Cookie 的过期时间(UTC 时间格式)。如果未设置此属性,Cookie 将在浏览器关闭时失效。

    document.cookie = "username=JohnDoe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
    
  • max-age: 设置 Cookie 的最大存活时间(以秒为单位),优先级高于 expires

    document.cookie = "username=JohnDoe; max-age=3600; path=/";
    
  • domain: 指定 Cookie 所属的域名。默认情况下,Cookie 只对当前域名有效。

    document.cookie = "username=JohnDoe; domain=.example.com; path=/";
    
  • path: 指定 Cookie 所属的路径。默认情况下,Cookie 只对当前路径及其子路径有效。

    document.cookie = "username=JohnDoe; path=/admin/";
    
  • secure: 指定 Cookie 是否仅通过 HTTPS 传输,增强安全性。

    document.cookie = "username=JohnDoe; secure; path=/";
    
  • HttpOnly: 防止 JavaScript 访问 Cookie,减少 XSS 攻击的风险。

    document.cookie = "sessionToken=abc123; HttpOnly; path=/";
    

Cookie__89">2.3 Cookie 的应用场景

  • 会话管理:保存用户的登录状态或会话令牌。

    // 登录成功后设置会话 Cookie
    document.cookie = "sessionId=abc123; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/; secure; HttpOnly";
    
  • 用户偏好设置:保存用户的语言选择、主题模式等偏好。

    // 保存用户选择的语言
    document.cookie = "language=en-US; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
    
  • 跟踪用户行为:记录用户访问的页面或点击的广告。

    // 记录用户访问的页面
    document.cookie = "visitedPages=home,about,contact; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";
    

localStorage__117">3. localStorage 基础


http://www.ppmy.cn/devtools/161507.html

相关文章

Windows 11【1001问】Windows 11系统硬件配置要求

Windows 11 的设计目标是让用户更贴近自己喜欢的内容,在其发布之际,计算机在连接、创作以及游戏体验方面扮演了更加核心的角色。在设定 Windows 11 的最低系统要求时,我们依据三个关键原则来指导决策,以确保用户能够获得卓越的使用…

前缀和刷题-- LeetCode

文章目录 寻找数组的中心下标题解代码 巧克力题解代码 寻找数组的中心下标 题目 题解 1. 预处理前缀和和后缀和数组,注意边界问题,f(0) 0,g(n-1) 0 2. 然后遍历数组一遍,f[i] g[i],i就是下标 3. 时间复杂度是:O(N) 代码 cl…

从零开始玩转TensorFlow:小明的机器学习故事 5

图像识别的挑战 1 故事引入:小明的“图像识别”大赛 小明从学校里听说了一个有趣的比赛:“美食图像识别”。参赛者需要训练计算机,看一张食物照片(例如披萨、苹果、汉堡等),就能猜出这是什么食物。听起来…

2007年诺基亚内部对iPhone的竞争分析报告

2007年iPhone发布后,诺基亚内部至少有9名员工指出其触屏界面、互联网整合能力将颠覆市场,并建议开发同类产品,但高管因当时占据全球50%市场份额而轻视威胁,认为苹果的高价和虚拟键盘会限制其普及。 诺基亚虽然意识到需推出触屏手机…

基于ffmpeg+openGL ES实现的视频编辑工具-添加背景音乐(十一)

在视频编辑领域,为视频添加背景音乐并实现音频的完美融合是一项关键任务。在上一篇文章中,我们大体介绍了添加背景音乐的整体逻辑,而本文将深入探讨其中音频合并所依赖的滤镜逻辑,通过对相关代码的详细解读,揭示音频合并的核心技术。 一、音频合并滤镜类的初始化 AudioA…

Python Seaborn库使用指南:从入门到精通

1. 引言 Seaborn 是基于 Matplotlib 的高级数据可视化库,专为统计图表设计。它提供了更简洁的 API 和更美观的默认样式,能够轻松生成复杂的统计图表。Seaborn 在数据分析、机器学习和科学计算领域中被广泛使用。 本文将详细介绍 Seaborn 的基本概念、常用功能以及高级用法,…

无监督机器学习算法

K-均值聚类是一种常用的无监督机器学习算法,用于将数据集中的样本分成 K 个不同的簇。其工作原理如下: 1. 随机选择 K 个数据点作为初始的簇中心。 2. 将每个数据点分配到距离最近的簇中心所属的簇。 3. 更新每个簇的中心,即取该簇中所有数据…

Kafka面试题----如何保证Kafka消费者在消费过程中不丢失消息

合理配置消费者参数 enable.auto.commit:设置为 false,关闭自动提交偏移量。自动提交偏移量存在一定的时间间隔,在这个间隔内如果消费者出现异常,可能会导致部分消息被重复消费或者丢失。关闭自动提交后,由开发者手动…