前端存储三剑客:localStorage、sessionStorage与Cookie解析

在浏览器中,本地存储(localStorage)、会话存储(sessionStorage)和 Cookie 都是用于在客户端保存数据的方式,但它们在生命周期、作用域、存储大小、安全性、HTTP 传输等方面有显著区别。


🔍 一、三者核心区别对比表

特性localStoragesessionStorageCookie
生命周期永久存储,除非手动清除仅在当前会话期间有效(关闭标签页即清除)可设置过期时间(ExpiresMax-Age
作用域(域名/路径)同源(协议+域名+端口)同源可指定路径、域名、安全标志
存储大小~5–10 MB(各浏览器略有差异)~5–10 MB~4 KB(单个 cookie)
是否随 HTTP 请求自动发送❌ 否❌ 否✅ 是(除非 HttpOnly
是否可被 JavaScript 访问✅ 是✅ 是✅ 是(除非 HttpOnly
安全性低(易被 XSS 攻击)低(同上)中高(HttpOnlySecureSameSite 可增强)
跨标签页共享✅ 是(同一源)❌ 否(仅当前标签页)✅ 是(如果域名和路径相同)

🧩 二、使用场景详解

localStorage:适合长期持久化数据

  • 适用场景
    • 用户偏好设置(如主题颜色、语言、字体大小等);
    • 登录状态记忆(如“记住我”功能);
    • 缓存静态资源或用户本地数据(如离线笔记、购物车草稿);
    • 单页应用(SPA)中跨页面共享状态。
  • 注意
    • 不适合存储敏感信息(如密码、Token),除非配合加密;
    • 大量数据可能导致性能下降或存储溢出。

sessionStorage:适合临时会话级数据

  • 适用场景
    • 表单填写过程中的临时数据保存(如用户填写了一半的注册表单,刷新后还能保留);
    • 临时状态管理(如“当前正在编辑哪个页面”);
    • 防止重复提交(在提交前设置一个标志位,提交成功后清除);
  • 注意
    • 关闭标签页后数据自动丢失,不能跨标签页共享;
    • 适合“本次会话”内使用的数据,不建议用于长期保存。

Cookie:适合与服务器通信,管理会话或身份验证

  • 适用场景
    • 用户登录态管理(如 JSESSIONIDAuth-Token);
    • 跟踪用户行为(如广告追踪、分析工具 GA);
    • 保持用户的会话状态(如购物车信息,由服务端维护);
    • 防止 CSRF 攻击(配合 SameSiteSecure 标志);
  • 最佳实践
    • 使用 HttpOnly:防止 XSS 攻击窃取 Cookie;
    • 使用 Secure:确保 Cookie 只通过 HTTPS 传输;
    • 使用 SameSite=StrictLax:防止 CSRF 攻击;
    • 尽量减少 Cookie 大小(单个 Cookie ≤ 4KB);
    • 避免在 Cookie 中存储敏感信息(如密码);

📌 三、最佳实践总结

类型最佳实践
localStorage- 仅用于非敏感数据
- 使用 JSON.stringify / parse 进行序列化
- 定期清理过期数据
- 添加前缀避免命名冲突(如 app_user_pref_theme
sessionStorage- 用于临时数据,不依赖持久化
- 提交前就应提交到后端,避免依赖前端存储
- 关闭标签页后自动清除,无需手动管理
Cookie- 优先使用 HttpOnly + Secure + SameSite=Lax
- 控制大小,避免发送不必要的数据
- 使用 max-ageexpires 设置合理过期时间
- 使用 path 限制访问路径,提高安全性

🛠️ 四、工具函数示例(封装)

// 本地存储工具const Storage ={// localStorage 读写setLocal(key, value){ localStorage.setItem(key,JSON.stringify(value));},getLocal(key, defaultValue =null){const item = localStorage.getItem(key);return item ?JSON.parse(item): defaultValue;},// sessionStorage 读写setSession(key, value){ sessionStorage.setItem(key,JSON.stringify(value));},getSession(key, defaultValue =null){const item = sessionStorage.getItem(key);return item ?JSON.parse(item): defaultValue;},// Cookie 读写(带安全标志)setCookie(name, value, days =7, path ='/'){const expires =newDate(); expires.setTime(expires.getTime()+ days *24*60*60*1000); document.cookie =`${name}=${encodeURIComponent(value)};expires=${expires.toUTCString()};path=${path};Secure;HttpOnly;SameSite=Lax`;},getCookie(name){const value =`; ${document.cookie}`;const parts = value.split(`; ${name}=`);if(parts.length ===2)returndecodeURIComponent(parts.pop().split(';').shift());returnnull;}};

✅ 五、总结

localStorage:长期保存,跨页面共享,适合用户偏好、离线数据。sessionStorage:仅当前会话有效,适合临时状态、表单草稿。Cookie:随 HTTP 请求自动发送,适合身份验证、会话管理,必须配合安全标志使用

六、附录(前端数据存储选型决策树)

你需要存储什么类型的数据?

数据需要长期保存吗?

是否需要跨标签页共享?

是否仅用于当前会话?

使用 localStorage

使用 sessionStorage

使用 sessionStorage

数据需要随 HTTP 请求发送给服务器吗?

是否涉及用户身份或敏感信息?

使用 Cookie + HttpOnly + Secure + SameSite=Lax

使用 Cookie(但控制大小)

优先考虑 localStorage 或 sessionStorage

Read more

2026年,AI短剧正在爆发:一款开源工具带你从0到1做短剧

2026年,AI短剧正在爆发:一款开源工具带你从0到1做短剧

大家好,我是小阳哥。 2026年,一个新的风口正在成型——AI短剧。 今天给大家推荐一个开源的 AI短剧神器。工具是开源免费的,可以自己部署,也可以直接下载可执行文件运行。 工具把 AI 短剧拆解成了一步步可执行的流水线: 小说 → 大纲 → 剧本 → 分镜 → 视频 而且是多 Agent 协作生成,非常接近真实影视制作流程。 接下来,一步步带大家看下如何使用。(工具地址放在文末了) 一、基础设置 在开始制作前,我们需要设置AI 模型。共需要3类 * 文本模型(写剧情) * 图像模型(生成角色/场景/分镜图片) * 视频模型(生成短剧) 这里面基本支持了市面上所有的主流模型 为每个 agent 设置对应的模型 支持修改每个agent的内置提示词 二、创作流程(核心流程) 1. 新建项目 字段包括:

口播博主必备神器:旗博士爆款口播自动生成智能体,一键生成AI口播视频,无限次数生成

口播博主必备神器:旗博士爆款口播自动生成智能体,一键生成AI口播视频,无限次数生成

KrLongAI 旗博士:本地部署的 AI 数字人口播视频全流程自动化工程 在 AIGC 赋能内容创作的浪潮下,数字人口播视频成为内容生产的重要形式,但传统制作流程存在文案创作难、音视频处理繁琐、多平台发布效率低等痛点。今天给大家推荐一款本地运行、模块化、可扩展的 AI 数字人口播视频自动化生成工具 ——KrLongAI 旗博士,它实现了从对标文案提取到多平台发布的全链路自动化,完美解决内容生产效率问题,同时兼具技术学习与工程实践价值,是 AI 视频方向开发者和内容创作者的优质工具。 PS:文末附有获取软件方式 免费获取软件、试用: https://pan.baidu.com/s/12kNd-iKyWLku9HWNCRccGQ?pwd=1234 案例 做自媒体必看!超强口播 AI 智能体,视频一键生成不限制 一、项目核心定位:工程整合与流程自动化 KrLongAI 旗博士并非单一的 AI 模型工具,

Python 驱动浏览器自动化:Playwright + AI 的 2026 最佳实践

Python 驱动浏览器自动化:Playwright + AI 的 2026 最佳实践

摘要:在 Web 自动化领域,Selenium 曾经的霸主地位已成历史,Playwright 凭其“快、稳、强”的现代特性成为了新标准。而在 2026 年,随着 LLM(大语言模型)和视觉多模态模型的爆发,自动化测试与 RPA(机器人流程自动化)迎来了范式革命。本文将深度解析 Playwright 的核心架构,并手把手教你构建一个具备“自愈能力”的 AI 驱动自动化 Agent。本文超 7000 字,包含大量实战代码与反爬对抗技巧。 第一章:Selenium 已死,Playwright 当立? 1.1 自动化的“不可能三角” 长期以来,Web 自动化工程师都在速度、稳定性和抗检测性之间做取舍: * Selenium:

Superpowers 与 gstack 深度解析:AI Coding Agent 的技能驱动与角色驱动架构对比

Superpowers 与 gstack 深度解析:AI Coding Agent 的技能驱动与角色驱动架构对比

我认真拆解了 Superpowers 和 gstack:它们都在重塑 AI 编程,但走的是两条完全不同的路 过去一年,AI 编程工具最大的变化,不是模型更强了,而是大家逐渐意识到一件事: 真正决定 AI 写代码质量的,往往不是模型本身,而是你如何组织它的工作方式。 也就是说,问题已经从“用哪个模型”慢慢转向了: * 怎么让 AI 不要一上来就胡乱写代码? * 怎么让它先想清楚需求、边界、测试和设计? * 怎么让它像一个靠谱的工程团队,而不是一个情绪不稳定的实习生? 最近两个很有代表性的开源项目,正好走了两条不同但都很值得研究的路径: * obra/superpowers:把 AI 编程流程建立在 skills(技能) 之上,强调可组合、可复用、可自动触发的工程化工作流。官方将它定义为“一个基于可组合 skills 的完整软件开发工作流”。 * garrytan/gstack:把