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

浅聊Web Storage(localStorage 和 sessionStorage)、cookie的使用场合

Web Storage(localStorage 和 sessionStorage)、cookie

  • 一、Cookie
  • 二、Web Storage
    • localStorage
    • sessionStorage
    • 与 Cookies 的比较

一、Cookie

Cookies 主要用于以下几种情况:

  1. 会话管理(Session Management): 登录、购物车、游戏得分,或者任何服务端应当记住的信息。
  2. 个性化(Personalization): 用户偏好设置、主题和其他设置。
  3. 跟踪(Tracking): 记录和分析用户行为。

详细说明如下:

  • 会话管理
    当用户在网站上进行操作时,服务器需要通过某种方式来识别各个请求是否来自同一浏览器。例如,在电子商务网站上,用户加入购物车中的商品必须与该用户的会话关联起来,这样在结账时网站才能发送正确的商品信息。Cookies 可以用于存储唯一的会话标识符,从而帮助维持用户会话状态。

  • 个性化
    站点可以使用 Cookies 来存储用户个性化设置,如语言偏好、地区设置或字体大小等。通过读取这些 Cookies,网站可以在用户每次访问时提供定制化的体验,无需用户重新配置其偏好设置。

  • 跟踪
    Cookies 经常用于网站分析,网站会利用 Cookies 来追踪用户在网站上的路径和行为。这有助于网站所有者了解用户偏好,改进网站内容和营销策略。广告网络也经常使用 Cookies 来收集有关用户兴趣的数据,并展示目标广告。

  • 安全性
    有些 Cookies(通常称为安全 Cookies)用于加强网络安全,比如防止 CSRF 攻击(跨站请求伪造),它们可以确保请求是由用户明确意愿发起的。

  • 跨站点请求
    Cookies 还可以用于实现第三方服务,例如社交媒体按钮、嵌入式内容或在线聊天服务。这些功能可能需要跨多个网站工作,并依赖于特定的 Cookies 来确保配置和用户偏好能够随处可用。

注意事项

  • 隐私权:因为 Cookies 可以用于跟踪用户在网站上甚至跨站点的行为,所以涉及到隐私问题。欧盟的《通用数据保护条例》(GDPR)和其他隐私法规要求网站获取用户同意才能使用 Cookies 进行跟踪。
  • 限制:一些现代浏览器在默认隐私模式下会限制跨站点跟踪 Cookies,尤其是第三方 Cookies。用户还可以自行清除 Cookie,或者设置浏览器禁用 Cookies。
  • 替代方案:随着 Web 技术的发展,某些 Cookies 的用途可能会被新技术所替代,如 Web Storage(localStorage 和 sessionStorage)、IndexedDB 或服务器端会话。

在设计应用程序时应慎重考虑使用 Cookies 的目的,并确保遵守相关的法律法规,同时为用户提供透明的隐私选项。
Cookies 通常有大小限制(每个域名下约 4 KB),因此只包含必要的数据。通常,Cookies 存储的是引用数据,如标识符或令牌,而更详细的数据则存储在服务器端。

二、Web Storage

Web Storage API 提供了两种在客户端存储数据的机制,这两种机制分别是 localStorage 和 sessionStorage。它们都允许网页存储键值对,以便在页面加载时可以读取使用。不过,它们的主要区别在于数据存储的生命周期和作用域。

localStorage

localStorage 用于长期保存数据,即使关闭浏览器后数据仍然保存在用户的设备上。除非明确通过脚本删除或用户清除浏览器缓存,否则这些数据不会消失。

特点:

  • 容量:通常有较大的存储限额(至少5MB)。
  • 持久性:数据永久保存,除非用户手动删除或由脚本清除。
  • 作用域:同源的所有窗口、标签页都能够共享相同的 localStorage 数据。
  • 应用场景:适用于需要跨会话持久保存的数据,如用户偏好设置、主题选择等。

使用示例:

// 设置 localStorage 中的键值对
localStorage.setItem('username', 'JohnDoe');// 获取存储的值
const username = localStorage.getItem('username');// 删除一个键值对
localStorage.removeItem('username');// 清空所有存储
localStorage.clear();

sessionStorage

与 localStorage 相比,sessionStorage 是为了在单个会话中存储数据而设计的。这意味着存储在 sessionStorage 中的数据只在页面的单次会话期间可用,即页面关闭后数据就被清除了。

特点:

  • 容量:通常有较大的存储限额(至少5MB)。
  • 持久性:数据只在页面会话期间存在,当页面会话结束(页面关闭)时数据就会丢失。
  • 作用域:数据只在创建它的窗口或标签页中有效;即使是相同的页面,在不同的标签页中也无法共享 sessionStorage 数据。
  • 应用场景:适用于某些数据只应在页面当前生命周期内保留,如表单输入数据或一次性登录验证。
    使用示例:
// 设置 sessionStorage 中的键值对
sessionStorage.setItem('sessionKey', '12345');// 获取存储的值
const sessionValue = sessionStorage.getItem('sessionKey');// 删除一个键值对
sessionStorage.removeItem('sessionKey');// 清空所有存储
sessionStorage.clear();

与 Cookies 的比较

  • Web Storage 提供的存储容量更大
  • Web Storage 的语法更简洁易用。
  • Cookies 每次都会随 HTTP 请求发送到服务器,而 Web Storage 仅存储在本地,不参与服务器通信。
  • Web Storage 提供了更加具体的控制范围,例如你可以控制数据存储的持久性(localStorage)或是会话级别(sessionStorage)。

尽管 Web Storage 提供了许多优点,但在考虑用户隐私和数据安全性时,开发者还需谨慎处理敏感数据,并根据实际需求合理选择何时使用 Cookies、localStorage 或 sessionStorage。

http://www.lryc.cn/news/406808.html

相关文章:

  • C语言输入输出缓冲机制
  • javaEE-03-cookie与session
  • EtherNet/IP转Profinet协议网关(经典配置案例)
  • 华为云依赖引入错误
  • 【Ubuntu】Ubuntu 配置镜像源(ARM)
  • 速腾聚创激光雷达复现FAST-LIO
  • k8s核心知识总结
  • 语言模型及数据集
  • linux如何卸载python3.5
  • 【BUG】已解决:TypeError: expected string or bytes-like object
  • 在linux上面用drissionpage自动化遇到反爬?
  • vue3大事件管理系统 === 首页 layout 文章分类页面 -
  • 堆的基本实现
  • Ubuntu上编译多个版本的frida
  • 概率论三大分布
  • Spring系统学习-基于XML的声明式事务
  • iOS中的MVVM设计模式
  • ES中的数据类型学习之ARRAY
  • vue网络请求
  • 几何光学基本原理——费马原理和射线方程
  • OpenCV车牌识别技术详解
  • 解决llama_index中使用Ollama出现timed out 问题
  • Python爬虫技术 第14节 HTML结构解析
  • 【vue3|第18期】Vue-Router路由的三种传参方式
  • ElasticSearch(六)— 全文检索
  • Oracle核心进程详解并kill验证
  • 【BUG】已解决:SyntaxError:positional argument follows keyword argument
  • 怎样在 Nginx 中配置基于请求客户端 Wi-Fi 连接状态的访问控制?
  • 逆向案例二十九——某品威客登录,请求头参数加密,简单webpack
  • 河道高效治理新策略:视频AI智能监控如何助力河污防治