前端小白必学:对Cookie、localStorage 和 sessionStorage 的简单理解

news2025/1/21 5:54:39

前言

CookielocalStoragesessionStorage 作为Web开发领域中广泛采用的三种客户端数据存储技术,它们各自拥有独特的优势、应用场景及限制条件,共同支撑起前端数据管理的多样化需求。也是面试常考题之一,今天就和大家简单谈一下我对它们的理解。

Cookie

Cookie: Cookie 最早被设计用于维护用户会话跟踪状态,例如存储登录凭证、用户偏好设置等。它的特性包括但不限于:

  • 服务器交互性:Cookie 可由服务器设置并通过HTTP头部在客户端与服务器间传递,使得服务器能识别并追踪用户的特定会话信息。
  • 大小限制:单个Cookie的大小通常限制在4KB左右,且大多数浏览器对每个域名下的总Cookie数量也有限制。
  • 生命周期管理:可设置为会话Cookie(浏览器关闭即失效)或持久Cookie(具有指定过期时间)。
  • 安全性考量:尽管存在安全隐患,但可通过HttpOnly标志防止XSS攻击,Secure标志保证HTTPS安全传输。

可以进入开发者模式(F12),打开后点击应用程序

image.png

image.png
点击之后就可以看到当前域名下面的cookie。本地存储就是指的localStorage,会话存储指的是sessionStorage。

localStorage

localStorage: localStorage是HTML5推出的一种持久化的客户端存储方案,特别适合存储不需要与服务器交互的大块数据,例如游戏进度、用户设置等。这是一个非常大的数字了,利用localStorage 存储必要的数据,使得在无网络环境下应用也能提供基本功能。

  • 大容量存储:相比Cookie,localStorage 提供了更大的存储空间,一般不少于5MB,具体依浏览器而定。
  • 持久性:除非主动删除或用户清空浏览器数据,否则数据将永久保留。
  • 简单易用:通过JavaScript的Web Storage API进行操作,支持键值对存储模型。(setItem,getItem用来存储和取出数据)
  • 局限性:受同源策略限制,且不参与网络请求,适合存储非敏感数据。

虽然localStorage 提供了便利的客户端存储能力,但由于其数据未加密且易于访问(特别是对于同源策略下的脚本),所以不适合存储敏感信息,如密码、个人身份信息等。对于这类数据,应考虑使用更安全的存储方式,如HTTPS-only cookie或服务器端会话存储。那么接下来就来介绍一下sessionStorage

sessionStorage

sessionStorage: sessionStorage 与 localStorage 类似,也是HTML5引入的存储机制,主要区别在于数据的有效期。sessionStorage 的数据仅在当前浏览器窗口或标签页中有效,一旦关闭页面,数据就会被清除。

特点

  • 有效期:仅在当前浏览器会话期间有效,标签页或窗口关闭即失效。
  • 容量限制:与localStorage相似,取决于浏览器。
  • 安全性:同样遵循同源策略,不参与网络请求。
  • 使用场景:适合存储临时的用户输入信息或状态,如表单填写过程中的草稿保存。

总结

  • 选择依据:如果需要长期存储用户数据且不随每次请求发送,可以选择localStorage;如果数据只需要在用户当前会话中临时保存,sessionStorage更合适;而cookie常用于需要在服务器和客户端之间传递小量信息,如认证令牌或保持用户会话状态。
  • 安全性考量:对于敏感数据,尽管这些存储方式都受限于同源策略,但最好还是在存储前进行加密处理,特别是使用localStorage和sessionStorage时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是TOGAF架构框架的ADM方法?

ADM是架构开发方法( Architecture Development Method),为开发企业架构所要执行的各个步骤以及它们质检的关系进行详细的定义,它是TOGAF规范中最为核心的内容。 ADM的具体步骤: 预备阶段(Preliminary Phas…

Redis 高可用(理论)

目录 Redis 高可用 Redis 持久化 RDB 持久化 触发条件 手动触发 自动触发 ##其他自动触发机制## 执行流程 启动时加载 AOF 持久化 执行流程 (1)命令追加(append) (2)文件写入(write)和文件同步(sync) (3&…

ThreadPoolExecutor 线程回收时机详解

个人博客 ThreadPoolExecutor 线程回收时机详解 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker,主要是用来…

AI agent是什么,什么技术栈

AI agent,也称为会话代理或聊天机器人, 是一种通过文本或语音模拟人类对话的计算机程序。 它们旨在以自然且引人入胜的方式理解和响应用户输入。 AI agent 被广泛用于各种应用中,包括客户服务、营销、 销售和教育。 有两种主要类型的 AI agen…

2.linux操作系统CPU使用率和平均负载区别

目录 概述cpu使用率区别 结束 概述 linux操作系统CPU 使用率 和 平均负载 区别 负载高并不一定使用率高,有可能 cpu 被占用,但不干活。 cpu使用率 cpu使用率:cpu非空闲态运行的时间占比,反映cpu的繁忙程度,和平均负载…

DS18B20单总线数字温度传感器国产替代MY18E20 MY1820 MY18B20Z MY18B20L(一)

前言 DS18B20是全球第一个单总线数字温度传感器,推出时间已经超过30年,最早由美国达拉斯半导体公司推出,2001年1月,美信以25亿美元收购达拉斯半导体(Dallas Semiconductor),而美信在2021年8月被…

使用vscode+git+github管理代码

一、打开代码所在的文件夹 以我最近的看的一个代码项目为例 打开如下 为了方便日后打开,可以把经常看的代码拉出来,然后建一个工作区,后续查看也方方便。直接点开下面第二张图的工作区文件就可以。 二、将代码上传到github 会自动创建一个同名…

成为画图大师,用图表讲故事

这些问题你是否遇到过: 项目总结会上,如果用数据呈现你做的价值? 完善详尽的数据分析得出了让人信服的结论,如何呈现在BOSS面前? 我们要的不是数据,而是数据告诉我们的事实 数据很重要,但只是原料,所以…

分治精炼宝库-----快速排序运用(⌯꒪꒫꒪)੭

目录 一.基本概念: 一.颜色分类: 二.排序数组: 三.数组中的第k个最大元素: 解法一:快速选择算法 解法二:简单粗暴优先级队列 四.库存管理Ⅲ: 解法一:快速选择 解法二:简单粗…

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作: git clone https://github.com/gperftools/gperftools.git 注:如果网速较慢,可直接去下载压缩包。 如我下载的地址:https://github.com/gperftools/gperftools/releases/ta…

Unity动画系统(1)

6.1 动画系统基础1-5_哔哩哔哩_bilibili 模型信息 Generic非人型 Configure 虚线圈可以没有,实线圈必须有,15个骨骼是必须的 p313 尾巴、翅膀属于非人型 p314 一般使用create from this model 游戏对象不再旋转 游戏对象不再发生位移 调整中心位置

八月份的护网行动如何参加?

护网行动背景 什么是“护网行动”? 指挥机构∶由公安机关统一组织的"网络安全实战攻防演习"。 护网分为两级演习∶公安部对总部,省厅对省级公司。 什么是“实战攻防演习” 每支队伍3-5 人组成,明确目标系统,不限制攻…

Class Constructors and Destructors (类的构造函数和析构函数)

Class Constructors and Destructors [类的构造函数和析构函数] 1. Declaring and Defining Constructors (声明和定义构造函数)2. Using Constructors (使用构造函数)3. Default Constructors (默认构造函数)4. Destructors (析构函数)5. Improving the Stock Class (改进 Sto…

使用 privacyIDEA 实现 Windows RDP 多因素认证 (MFA)

前言 在等保 2.0 标准中有要求: d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。 可以借助开源的 privacyIDEA 配合 AD 域环境实现 RDP MFA 认证登录以满足上面的要…

docker安装rocketMq5x以上的版本

1.背景 安装RocketMQ 5.x以上的版本主要是因为新版本引入了许多性能优化、新功能以及对已有特性的增强,这些改进可以帮助提升消息队列系统的稳定性和效率。 1.性能提升:RocketMQ 5.x版本通常包括了对消息处理速度、吞吐量和延迟的优化,使得系…

大模型压缩-LoRAP

这里写目录标题 1.多头注意力和FFN的权重分布2 多头矩阵的低秩分解FFN无梯度通道剪枝 这篇文章 1期望找到一个“剪枝+低秩分解”的路子,使结构化剪枝达到非结构化剪枝的性能。 1.多头注意力和FFN的权重分布 Fig. 1.1 多头注意力权重矩阵 从Fig.1.1可以看…

万字浅析视频搜索系统中的多模态能力建设

万字浅析视频搜索系统中的多模态能力建设 FesianXu 20240331 at Tencent WeChat search team 前言 视频搜索是天然的富媒体检索场景,视觉信息占据了视频的一大部分信息量,在视频搜索系统中引入多模态能力,对于提高整个系统的能力天花板至关重…

学习感悟丨在誉天学习数通HCIP怎么样

大家好,我是誉天学员的徐同学,学习的数通HCIP课程。 在学校的时候,听说下半年就要出去实习了,心中坎坷不安,现在我学到的知识远远不够的。然后就想着学点东西充实一下自己的知识面和专业能力,有一次和同学谈…

【STM32嵌入式系统设计与开发---传感器拓展】——1_4_标准库FreeRTOS移植实验

目录 雅俗理解源码下载链接知识拓展步骤1:stm32f103vet6移植freeRTOS步骤:(1)准备开发环境(2)添加FreeRTOS移植 致谢 雅俗理解 雅:FreeRTOS是一个开源的实时操作系统(RTOS)&#xf…

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】 1.1 什么是高斯金字塔? 高斯金字塔(Gaussian Pyramid)是一种多分辨率图像表示方法,用于图像处理和计算机视觉领域。它通过对原始图像进行一系列的高斯平滑和下采样操作&#x…