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

浏览器存储实战:localStorage/sessionStorage/cookie 用法详解|JS 进阶必会篇

【浏览器存储localStorage/sessionStorage/cookie】【前端开发常见场景】从【核心特性与用法】到【落地实操选型】彻底搞懂浏览器存储的最佳用法避开跨tab不同步、容量超限、XSS攻击等高频坑 文章目录一、开篇为什么要关心浏览器存储二、概念扫盲三、localStorage持久化存储3.1 是什么3.2 基本用法3.3 适用场景四、sessionStorage会话级存储4.1 是什么4.2 基本用法4.3 适用场景4.4 常见误区五、cookie会被请求携带的存储5.1 是什么5.2 基本用法5.3 适用场景六、实战场景该用哪个6.1 Token 存储6.2 用户配置主题、语言等6.3 缓存查询条件表格筛选、分页6.4 多步表单的中间状态七、怎么选一张表搞定八、踩坑指南九、小结 本系列专栏导航同学们好我是 Eugene尤金一个拥有多年中后台开发经验的前端工程师~Eugene 发音很简单/juːˈdʒiːn/大家怎么顺口怎么叫就好你是否也有过明明学过很多技术一到关键时候却讲不出来、甚至写不出来你是否也曾怀疑自己是不是太笨了明明感觉会却总差一口气就算想沉下心从头梳理可工作那么忙回家还要陪伴家人。一天只有24小时时间永远不够用常常感到力不从心。技术行业本就是逆水行舟不进则退。如果你也有同样的困扰别慌。从现在开始跟着我一起心态归零利用碎片时间来一次彻彻底底的基础扫盲。这一次我们一起慢慢来扎扎实实变强。不搞花里胡哨的理论堆砌只分享看得懂、用得上的前端干货咱们一起稳步积累真正摆脱“面向搜索引擎写代码”的尴尬。一、开篇为什么要关心浏览器存储日常开发里经常会遇到Token 存哪登录后 token 放在哪、刷新页面怎么不丢用户配置主题、语言、侧边栏收起状态下次打开要记住。列表筛选表格的筛选条件、分页、排序希望刷新后还能保留。这些都要用到浏览器存储。但 localStorage、sessionStorage、cookie 该怎么选场景对应错了就会有跨 tab 不同步、隐私泄露、存不下等问题。下面从概念 → 用法 → 实战场景 → 选型 → 踩坑把三者讲清楚日常该用哪个、为什么这么用、容易踩哪些坑。⬆ 返回目录二、概念扫盲先用一张表看清三者区别特性localStoragesessionStoragecookie生命周期持久化除非手动删除关闭标签页即失效可设置过期时间容量约 5MB约 5MB约 4KB作用域同源下所有页面共享仅当前标签页同源共享可设置 path是否随请求发送否否是每次请求自动带API 风格getItem/setItem同上document.cookie字符串操作一句话记localStorage长期存、全页面共享适合偏好、配置。sessionStorage仅当前标签页、关掉就丢适合临时状态。cookie每次请求都会带上适合需和服务端交互的如认证、会话。⬆ 返回目录三、localStorage持久化存储3.1 是什么localStorage 是持久化存储数据不会过期除非主动删除或用户清除浏览器数据。同源下所有页面共享。⬆ 返回目录3.2 基本用法// 存localStorage.setItem(theme,dark);// 取constthemelocalStorage.getItem(theme);// dark// 删localStorage.removeItem(theme);// 清空所有localStorage.clear();注意只能存字符串。对象需要序列化// 存对象constuserConfig{theme:dark,lang:zh};localStorage.setItem(userConfig,JSON.stringify(userConfig));// 取对象constconfigJSON.parse(localStorage.getItem(userConfig)||{});⬆ 返回目录3.3 适用场景用户主题、语言、侧边栏状态需要持久化的列表筛选、排序、分页表单草稿不敏感数据Token前提是放在合理的安全体系里⬆ 返回目录四、sessionStorage会话级存储4.1 是什么sessionStorage 的生命周期只到当前标签页关闭。新开标签页是新会话数据不共享。⬆ 返回目录4.2 基本用法// 用法和 localStorage 一样sessionStorage.setItem(tempId,abc123);consttempIdsessionStorage.getItem(tempId);sessionStorage.removeItem(tempId);⬆ 返回目录4.3 适用场景当前页的临时数据如多步表单的中间页不希望跨 tab 共享的数据表单防重复提交用的临时标记一些只对当前会话有用的临时 token⬆ 返回目录4.4 常见误区很多人以为 sessionStorage 和“会话”一样关浏览器才清空。实际上关闭标签页→ 数据就没了刷新页面→ 数据还在新开标签页→ 新会话看不到旧数据⬆ 返回目录五、cookie会被请求携带的存储5.1 是什么cookie 是早期方案容量小每次 HTTP 请求会自动带上同域且 path 匹配时。因此常用来存 sessionId、token 等需要和服务端交互的信息。⬆ 返回目录5.2 基本用法cookie 需要手动拼字符串原生 API 不友好// 设置 cookie需手动拼接document.cookietokenabc123; path/; max-age3600;// 1小时过期// 读取 cookieconstcookiesdocument.cookie;// tokenabc123; themedark// 需要自己解析functiongetCookie(name){constmatchdocument.cookie.match(newRegExp((^| )name([^;])));returnmatch?match[2]:null;}getCookie(token);// abc123常用属性说明属性含义path/哪些路径会携带此 cookiemax-age3600多少秒后过期domain.example.com子域名共享Secure仅 HTTPS 传输HttpOnly禁止 JS 访问防 XSS 读 token⬆ 返回目录5.3 适用场景登录凭证sessionId、token尤其是需要服务端校验时与后端交互的会话状态老项目或接口强依赖 cookie 的场景现代项目里很多 token 用 localStorage 存请求时通过Authorization头发送而不再用 cookie。这取决于你的前后端约定和安全方案。⬆ 返回目录六、实战场景该用哪个6.1 Token 存储常见做法有三种方式优点缺点localStorage刷新不丢、跨 tab 共享、实现简单易受 XSS 攻击读走 tokensessionStorage关 tab 即失效相对更安全刷新会丢需配合刷新 token 逻辑cookie (HttpOnly)JS 无法读取防 XSS 偷 token需后端配合设置前后端都要处理建议大部分前后端分离项目用localStorage配合 XSS 防护输入过滤、CSP 等。对安全要求高的项目用HttpOnly cookie由后端设置。仅当前 tab 有效的临时 token用sessionStorage。示例localStorage 存 token// 登录成功后consttokenresponse.data.token;localStorage.setItem(token,token);// 请求拦截器里axios.interceptors.request.use(config{consttokenlocalStorage.getItem(token);if(token){config.headers.AuthorizationBearer${token};}returnconfig;});// 退出登录localStorage.removeItem(token);⬆ 返回目录6.2 用户配置主题、语言等这类配置需要持久化且希望下次打开还是同样的用localStorage// 封装一个简单的配置管理constCONFIG_KEYuserConfig;constdefaultConfig{theme:light,lang:zh,sidebarCollapsed:false};functiongetConfig(){try{constsavedlocalStorage.getItem(CONFIG_KEY);returnsaved?{...defaultConfig,...JSON.parse(saved)}:{...defaultConfig};}catch{return{...defaultConfig};}}functionsetConfig(partial){constconfig{...getConfig(),...partial};localStorage.setItem(CONFIG_KEY,JSON.stringify(config));returnconfig;}// 使用setConfig({theme:dark});constconfiggetConfig();⬆ 返回目录6.3 缓存查询条件表格筛选、分页列表的筛选、排序、分页希望刷新后还能保留用localStorageconstCACHE_KEYuserList_query;// 进入页面时恢复constsavedQueryJSON.parse(localStorage.getItem(CACHE_KEY)||{});this.filterssavedQuery.filters||{};this.paginationsavedQuery.pagination||{page:1,size:10};// 筛选或分页变化时保存functionsaveQuery(filters,pagination){localStorage.setItem(CACHE_KEY,JSON.stringify({filters,pagination}));}// 清空筛选时清除functionclearQuery(){localStorage.removeItem(CACHE_KEY);}⬆ 返回目录6.4 多步表单的中间状态多步表单的中间页只对当前 tab 有效不希望跨 tab 共享用sessionStorage// 第二步填写时保存sessionStorage.setItem(formStep2,JSON.stringify(formData));// 第三步页面加载时恢复conststep2DataJSON.parse(sessionStorage.getItem(formStep2)||{});// 提交成功后清除sessionStorage.removeItem(formStep2);⬆ 返回目录七、怎么选一张表搞定场景推荐理由TokenlocalStorage 或 HttpOnly cookie持久、跨 tab安全要求高用 cookie用户主题、语言、配置localStorage持久化刷新和重开都保留列表筛选、分页、排序localStorage持久化提升使用体验多步表单中间状态sessionStorage仅当前 tab关掉即清空临时防重复提交标记sessionStorage仅当前会话有效需要随请求自动携带的凭证cookie浏览器会自动带上⬆ 返回目录八、踩坑指南坑原因建议存对象报错或乱码只支持字符串用JSON.stringify存JSON.parse取私密模式下 localStorage 可能不可用部分浏览器会限制或清空用 try-catch 包一层失败时降级到内存跨 tab 不同步localStorage 变更不会自动通知其他 tab监听storage事件做同步cookie 超出 4KB单条 cookie 约 4KB 限制大对象改用 localStorage或拆分多个 cookie测试环境数据残留上次测试数据还在测试前localStorage.clear()或单独用测试 keystorage 事件跨 tab 同步当其他 tab 修改了 localStorage当前 tab 会触发storage事件window.addEventListener(storage,(e){if(e.keytheme){// 其他 tab 改了 theme这里同步更新applyTheme(e.newValue);}});注意修改 localStorage 的那个 tab 不会触发只有其他同源页面会收到。⬆ 返回目录九、小结存储方式一句话典型场景localStorage持久、同源共享、不随请求发送用户配置、token、列表筛选缓存sessionStorage当前标签页有效、关掉即丢多步表单、临时标记cookie容量小、随请求自动携带需后端校验的登录凭证记住三点需要持久化、跨 tab用 localStorage仅当前 tab、关掉就丢用 sessionStorage。需要随请求自动携带用 cookie否则优先用 localStorage/sessionStorage。只存字符串对象用JSON.stringify/parse注意容量localStorage 约 5MBcookie 约 4KB。选对存储方式可以少很多莫名其妙的 bug也更符合安全和性能预期。⬆ 返回目录 本系列专栏导航 JS 进阶必会点一、《闭包实战从原理到防抖・节流・缓存JS 进阶必会篇》二、《异步基础Promise async/await 实战JS 进阶必会篇》三、《常用工具函数深拷贝・去重・扁平化手写实战JS 进阶必会篇》四、《事件循环与宏微任务log 顺序实战解析JS 进阶必会篇》五、《设计模式实战单例・发布订阅・策略 JS 轻量用法JS 进阶必会篇》六、《浏览器存储实战localStorage/sessionStorage/cookie 用法详解JS 进阶必会篇》 跟着系列慢慢学把技术功底扎扎实实地打牢 更多内容TS/Vue/工程化等共47篇已整理成「全体系总目录」收藏后可一站式学习 系列总览想系统学习Vue3中后台开发收藏这份「全体系指南」47篇干货从基础到工程化全覆盖《前端基础实战JS/TS与Vue体系化扫盲47 篇完整目录 避坑》 每篇都配套实战场景避坑指南帮你摆脱「面向搜索引擎写代码」的尴尬⬆ 返回目录学习本就是一场持久战不需要急着一口吃成胖子。哪怕今天你只记住了一点点这都是实打实的进步。后续我还会继续用这种大白话、讲实战方式带大家扫盲更多前端基础。关注我不迷路咱们把那些曾经模糊的知识点一个个彻底搞清楚。如果你觉得这篇内容对你有帮助不妨点赞收藏下次写代码卡壳时拿出来翻一翻比搜引擎更靠谱。我是 Eugene你的电子学友我们下一篇干货见

相关文章:

浏览器存储实战:localStorage/sessionStorage/cookie 用法详解|JS 进阶必会篇

【浏览器存储(localStorage/sessionStorage/cookie)】【前端开发常见场景】:从【核心特性与用法】到【落地实操选型】,彻底搞懂浏览器存储的最佳用法,避开跨tab不同步、容量超限、XSS攻击等高频坑! &#x…...

Minecraft 1.21.1 NeoForge开发笔记 #1 开发环境

1.1安装JavaMinecraft(以下简称MC)1.21.1要求的最低Java版本为21。从oracle官网下载该版本的JDK并安装,并配置环境变量,该环节操作细节大家可以从很多地方找到就不赘述了。1.2下载NeoForge开发MDK登录NeoForge官网:neo…...

OpenClaw版本降级实操(含全量卸载)

降级的核心动因是新版本有 Bug、兼容性差,或功能 / 性能不符合需求,比如2026.2.3 是更稳定、适配性更好的版本; 实操中最常见的是 “配置 / 模型兼容问题” 和 “新版本 Bug”,这也是之前降级指南中强调 “重置配置”“验证模型” 的原因; 降级本质是 “放弃新版本的新功能…...

NT3H1101W0FHKH 中文规格书开放获取(完整中英对照/能量采集NFC标签IC)

项目说明: 已完成NXP NT3H1101W0FHKH 能量采集NFC标签IC官方数据手册的完整汉化,主要特性:页数:65页(中文版)/130页(双语版)格式:完美保留原版排版、状态图、表格与公式文…...

Goland 2026.1 EAP 官宣新特性!

方法/函数自动提示指针接收者 GoLand 建议使用指针接收器,并且在代码补全列表中将其排在首位,因为现有的方法已使用了指针接收器。幸运的是,你可以自行修改此设置。请前往 设置(Settings) → 编辑器(Editor…...

屏幕之外:Web技术如何重构工业HMI的边界

长期以来,工业HMI一直是一个“软硬捆绑”的黑盒子。你买了A厂家的触摸屏,就必须用A厂家的组态软件,还要买那根专用的下载线。一旦屏幕坏了,你必须买同型号的硬件,否则程序可能无法移植。但随着HTML5和Web技术全面渗透工…...

YOLOv11自动截图与告警机制全攻略:从入门到实战,手把手教你构建智能监控系统

🎬 Clf丶忆笙:个人主页 🔥 个人专栏:《YOLOv11全栈指南:从零基础到工业实战》 ⛺️ 努力不一定成功,但不努力一定不成功! 文章目录 一、开篇:为什么我们需要自动截图与告警? 1.1 从"看得见"到"看得懂":AI视觉的价值跃迁 1.2 YOLOv11:不止是…...

博客接口自动化测试--搭建测试环境库的介绍安装allure

一、搭建测试环境 新建PyCharm项目 查看Python安装路径: Windowsr -> cmd -> where python 切换终端类型为Windows PowerShell PowerShell:功能更强,适合复杂脚本、管道操作 File -> Settings -> Tools -> Terminal Shell p…...

Vue3 + Element Plus 全局 Message、Notification 封装与规范|Vue生态精选篇

前端实战:Vue3 Element Plus 全局 Message、Notification 封装教程,从概念区分、场景选择到统一错误处理、代码落地,一站式学会前端提示框封装,告别混乱代码与重复开发。 📑 文章目录 一、我们为什么要封装&#xff…...

【anthropic官方Skill】brand-guidelines 技能

将Anthropic官方品牌颜色和排版应用于任何可能受益于Anthropic外观和感觉的工件。当品牌颜色或风格指南、视觉格式化或公司设计标准适用时使用此技能。技能概述brand-guidelines 技能提供访问Anthropic官方品牌标识和样式资源的能力。该技能专门用于应用Anthropic的品牌视觉识别…...

OpenClaw 结合 Ollama 本地 LLM 运行技术文档

系列文章目录 第一章 OpenClaw安装操作方法Windows,附vmware虚拟机文件。 第二章 免费使用openclaw真的好用——OpenClaw与OpenClaw Zero Token优劣势深度剖析 第三章 OpenClaw 结合 Ollama 本地 LLM 运行技术文档 我已经将配置好的Vmware虚拟机上传至网盘,大小60Gb。环境为…...

MCP 工具开发入门:给 Claude 装上自定义技能

上周有个需求:让 Claude 能直接查我们内部的工单系统。以前的做法是把工单内容复制粘贴给 Claude,效率很低。研究了一下 MCP,发现这个问题用 MCP 解决特别优雅,写一个 server 就搞定了。 这篇从头讲怎么写一个 MCP server&#xf…...

python中类与对象的小理解

定义 class Car:(这其中Car就是类哦) pass(暂时跨过)c1Car()(其中Car()是创建对象,这是对象就已经存在了,那我们可能会有疑问,为什么要专门有一个变量去存已经存在的对象呢?原来创建对象后我们还要一个贴在对象上的标签,一个写着对象地址的标签<有点像指针>)c1.color&q…...

真正的管理者,从不陷于具体事务

真正的管理者&#xff0c;从不陷于具体事务在管理实践中&#xff0c;存在一种普遍的误解&#xff1a;优秀的管理者必须巨细靡遗、亲力亲为&#xff0c;深入到每一项具体事务中&#xff0c;才能体现其负责与能干。然而&#xff0c;真正的管理智慧&#xff0c;绝非埋首于琐碎&…...

非常详细:AI大模型课程|非计算机专业转行人工智能,好就业吗?

很多就业者在看到人工智能领域发展的很好&#xff0c;意识觉醒的人想进入这个行业里面得到一些新兴行业的红利&#xff0c;想转行却担心自己的经历或者是专业被卡&#xff0c;犹豫不决&#xff0c;今天就来和大家聊一聊这个话题&#xff0c;看看能不能解除你的疑惑。 01写在前…...

C#上位机+YOLO+PLC对接:Modbus TCP实现产线全自动视觉检测,无人值守

摘要: 在工业4.0浪潮下,孤立的AI算法无法产生价值。真正的“无人值守”产线,需要视觉大脑(YOLO)、**控制中枢(C#上位机)与执行手脚(PLC)**的无缝协同。 很多开发者卡在最后一步:模型训练好了,C#界面写好了,但怎么让PLC知道结果?怎么保证信号不丢失?怎么处理通信超…...

全球 AI 大模型本质唯一与形式本质统一标准|Global Standard on Essence Uniqueness Form‑Essence Unity in Large AI Models

鸽姆智库发布全球首个AI大模型“本质唯一与形式本质统一”强制标准&#xff0c;终结表象欺诈摘要&#xff1a; 鸽姆智库于2026年3月发布全球首个关于AI大模型本质唯一性与形式本质统一的强制性标准。该标准旨在根治AI模型“形式高度发达、本质极其低劣”的表象欺诈&#xff0c;…...

衡山派开发板镜像烧录实战:使用AiBurn工具从编译到上电的完整指南

衡山派开发板镜像烧录实战&#xff1a;使用AiBurn工具从编译到上电的完整指南 最近有不少刚拿到衡山派&#xff08;HSPI&#xff09;开发板的朋友问我&#xff0c;编译好的系统镜像该怎么烧录到板子里&#xff1f;是像STM32那样用J-Link吗&#xff1f;其实衡山派有自己的一套方…...

全球 AI 大模型架构主权与因果涌现标准 |Global Standard for Architecture Causal Emergence in Large AI Models

鸽姆智库全球 AI 大模型架构主权与因果涌现标准&#xff08;正式法律文本格式&#xff09;GG3M Think Tank Global Standard on Architectural Sovereignty and Causal Emergence for Large AI Models (Formal Legal Text)表格基础信息项内容详情标准编号 / Standard No.GG3M-A…...

2025年中国脑机接口技术商业化路径与市场机遇

1. 从科幻到现实&#xff1a;脑机接口的商业化拐点已至 还记得那些科幻电影里&#xff0c;人们用意念操控机械臂、在虚拟世界里自由驰骋的场景吗&#xff1f;十年前&#xff0c;这还只是天马行空的想象。但今天&#xff0c;我可以很肯定地告诉你&#xff0c;这项名为“脑机接口…...

深入解析nslookup命令:从基础查询到高级DNS记录类型

1. 从零认识nslookup&#xff1a;你的网络“电话本”查询员 如果你刚接触网络管理或者运维&#xff0c;可能会觉得nslookup这个命令有点神秘。其实&#xff0c;把它想象成一个超级高效的“电话本查询员”就很好理解了。我们每天上网&#xff0c;输入像 www.baidu.com 这样的网…...

Linux OOM Killer实战解析:从日志分析到问题定位

1. 当你的Linux服务器突然“发疯”&#xff1a;OOM Killer登场 不知道你有没有遇到过这种情况&#xff1a;服务器上跑得好好的一个服务&#xff0c;突然就没了&#xff0c;查日志发现进程被系统“杀”了&#xff0c;留下一脸懵的你。或者&#xff0c;你的嵌入式设备在长时间运行…...

Hyper-V虚拟化环境下的多网口软路由单臂路由实战:VLAN配置与剩余端口上网全解析

1. 为什么要在Hyper-V里折腾多网口软路由单臂路由&#xff1f; 大家好&#xff0c;我是老张&#xff0c;一个在虚拟化和网络这块摸爬滚打了十来年的老玩家。今天想和大家聊聊一个挺有意思&#xff0c;也很有实用价值的场景&#xff1a;在Hyper-V里&#xff0c;用一台多网口的软…...

利用Windows特性(::$DATA)绕过文件上传检测的实战解析

1. 文件上传检测&#xff1a;一场猫鼠游戏 做安全测试的朋友们&#xff0c;尤其是搞Web渗透的&#xff0c;肯定对文件上传这个点又爱又恨。爱的是&#xff0c;一旦找到一个上传漏洞&#xff0c;往往就是拿到服务器权限的“高速公路”&#xff1b;恨的是&#xff0c;现在的防护…...

SeaweedFS与MinIO深度对比:架构差异与场景化选型指南

1. 从“存文件”到“管数据”&#xff1a;为什么选型这么难&#xff1f; 做技术选型&#xff0c;特别是存储这块&#xff0c;经常让人头疼。我见过不少团队&#xff0c;一开始图省事&#xff0c;随便选了一个“名气大”的方案&#xff0c;结果项目上线没多久&#xff0c;就遇到…...

临床队列分析总出错?(R tidyverse医学清洗模板大揭秘)——附FDA合规性验证脚本

第一章&#xff1a;临床队列分析出错的根源诊断与FDA合规性认知鸿沟临床队列分析在真实世界证据&#xff08;RWE&#xff09;生成中承担关键角色&#xff0c;但其结果偏差常源于底层数据治理缺陷与监管逻辑断层。当统计模型输出显著p值却无法通过FDA审评时&#xff0c;问题往往…...

从越狱到免越狱:利用TrollStore实现iPA包的提取与安装

1. 从“折腾”到“优雅”&#xff1a;iOS应用自由之路的变迁 几年前&#xff0c;如果你想在iPhone上安装一个没有上架App Store的应用&#xff0c;或者想把自己手机上已经安装的某个应用完整地“抠”出来备份&#xff0c;那几乎只有一条路可走&#xff1a;越狱。我记得那时候&a…...

基于IPv6与DDNS的远程办公解决方案:从路由器配置到Windows桌面控制

1. 为什么你需要IPv6DDNS&#xff1a;告别内网穿透的折腾 如果你和我一样&#xff0c;是个需要随时随地能连回家中电脑的上班族、开发者&#xff0c;或者只是想在外轻松管理家里网络设备的人&#xff0c;那你肯定没少为“远程访问”这件事头疼过。早几年&#xff0c;我们可能得…...

SecGPT-14B多场景落地:安全意识培训中生成钓鱼邮件识别互动测验题

SecGPT-14B多场景落地&#xff1a;安全意识培训中生成钓鱼邮件识别互动测验题 1. 引言&#xff1a;当安全意识培训遇上AI助手 想象一下这个场景&#xff1a;作为企业的安全负责人&#xff0c;你正在筹备新一轮的员工安全意识培训。传统的培训方式&#xff0c;比如播放PPT、发…...

影墨·今颜小红书模型生成作品集展示:覆盖美妆、旅行、美食多垂类

影墨今颜小红书模型生成作品集展示&#xff1a;覆盖美妆、旅行、美食多垂类 最近在内容创作圈子里&#xff0c;影墨今颜这个专门针对小红书平台的AI文案模型&#xff0c;讨论热度一直挺高。很多人好奇&#xff0c;一个专门训练的模型&#xff0c;生成的内容到底和通用模型有多…...