首页 > web前端 > js教程 > 正文

javascript如何实现本地存储_cookie与localStorage有何区别?

幻影之瞳
发布: 2025-12-19 12:46:02
原创
596人浏览过
JavaScript本地存储应按需选用cookie或localStorage:cookie用于身份认证等需服务端交互的小数据,支持HttpOnly防XSS;localStorage适合前端大容量状态存储,但易受XSS攻击。

javascript如何实现本地存储_cookie与localstorage有何区别?

JavaScript 中的本地存储主要靠 cookielocalStorage 实现,但它们的设计目标、容量、生命周期和使用方式差异明显。选错方案容易导致数据丢失、安全风险或功能异常。

cookie:带服务端通信的小型文本存储

cookie 是最早期的客户端存储机制,本质是键值对字符串,随每次 HTTP 请求自动发送到服务器(除非标记为 HttpOnly)。它主要用于身份认证(如 session ID)、用户偏好同步等需要前后端协同的场景。

  • 单个 cookie 最大 4KB,一个域名下总数量和大小受浏览器限制(通常 50–100 个)
  • 可设置过期时间(ExpiresMax-Age),不设则为会话级(关闭浏览器即失效)
  • 支持 Secure(仅 HTTPS 传输)、HttpOnly(JS 无法读取,防 XSS)、SameSite(防 CSRF)等安全属性
  • 操作需手动拼接字符串,原生 API 不友好:
    document.cookie = "user=jack; expires=Thu, 01 Jan 2030 00:00:00 GMT; path=/; Secure"

localStorage:纯前端的大容量持久化存储

localStorage 是 HTML5 提供的 Web Storage API 之一,数据仅保存在浏览器本地,不会随请求发往服务器,适合存用户界面状态、缓存非敏感数据等。

慧中标AI标书
慧中标AI标书

慧中标AI标书是一款AI智能辅助写标书工具。

慧中标AI标书 295
查看详情 慧中标AI标书
  • 容量大(通常 5–10MB/域名),远超 cookie
  • 数据永久保存,除非手动调用 removeItem()clear(),或用户清除浏览数据
  • 仅限同源访问(协议 + 域名 + 端口完全一致)
  • API 简洁:
    localStorage.setItem("theme", "dark")
    const theme = localStorage.getItem("theme")
    localStorage.removeItem("theme")
  • 只支持字符串,存对象需先 JSON.stringify(),取时再 JSON.parse()

关键区别速查表

传输行为:cookie 自动参与 HTTP 通信;localStorage 完全不发送给服务器。
容量与用途:cookie 小而精,用于身份凭证;localStorage 大而稳,用于前端状态管理。
生命周期控制:cookie 可精确控制过期;localStorage 无内置过期机制(需代码自行实现时间戳判断)。
安全性侧重:cookie 有 HttpOnly 防 XSS,但易受 CSRF 影响;localStorage 不受 CSRF 影响,但 JS 可读写,XSS 攻击下更危险。

实际开发建议

  • 登录态 token:优先用 HttpOnly + Secure cookie 存 session ID;若必须前端读(如 JWT),且信任前端环境,可用 localStorage,但务必防范 XSS
  • 用户设置(主题、语言):用 localStorage,避免增加请求体积
  • 临时缓存(列表页数据):localStorage 或 sessionStorage(关闭标签页即清空)更合适
  • 不要用 localStorage 存密码、支付信息等敏感内容
  • 注意 localStorage 在 iOS Safari 的无痕模式下可能抛出 QuotaExceededError(实际容量为 0)

以上就是javascript如何实现本地存储_cookie与localStorage有何区别?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号