前端数据存储之cookie、LocalStorage与SessionStorage

JS详解Cookie、LocalStorage与SessionStorage

基本概念

Cookie
Cookie是小甜饼的意思。顾名思义,cookie确实非常小,它的大小限制为4KB左右。他的主要用途又保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通过在Cookie中存入一段辨别用户身份的数据来实现的。

localStorage

localStorage是HTML5标准中新加入的技术,它并不是什么划时代的新东西。早在IE6时代,就有一个叫userData的东西用于本地存储,而当时考虑到浏览器兼容性,更通用的方案是使用Flash
。而如今,localStorage被大多数浏览器所支持,如果你的网站需要至此IE6+,那么userData作为你的polyfill的方案是种不错的选择。

sessionStorage

sessionStorage与localStorage的接口类似,但保存数据的生命周期与localStorage不同。做过后端开发的同学应该知道Session这个词的意思,直译过来是”绘话“。而sessionStorage是一个前端的概念,它只是可以将一部分数据在当前绘话中保存下来,刷新页面数据依旧存在。但当页面关闭后,sessionStorage中的数据就会被清空。

三者的异同

特性CookielocalStoragesessionsStorage
数据的生命周期一般由服务器生成,可设置失效时间。如果浏览器端生成Coolie,默认是关闭浏览器后失效除非被清除,否则永久保存仅在当前会话下有小,关闭页面或者浏览器后被清除
存放数据大小4K左右一般为5MB一般为5KB
与服务器端通讯每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题仅在客户端(浏览器)中保存,不参与和服务器的通信仅在客户端(浏览器)中保存,不参与和服务器的通信
易用性需要程序员自己封装,源生的Cookie接口不友好源生接口可以接受,亦可再次封装来对Object和Array有更好的支持源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

应用场景

有了对上面这些差别的直观理解,我们就可以讨论三者的应用场景了。
因为考虑到每个HTTP请求都会到这Cookie当然是能精简啦,比较常用的一个应用场景就是判断用户是否登录。针对登录过的用户,服务器会在他登录是往Cookie中插入一段加密过的唯一标识单一用户的辨识码,下次只要读取这个之就可以判断当前用户是否登录啦。曾经还使用Cookie来保存用户在电商网站的购物车信息,如今有了localStorage也是非常适用的。如果遇到一些内容特别多的表单,为了优化用户体验,我们可能把表单页面拆分成多个子页面,然后按步骤引导用户填写。这时候sessionStorage的作用就发挥出来了。

安全性的考虑

需要注意的是,不是什么数据都适合放在Cookie、localStorage和sessionStorage中。使用它们的时候,需要时刻注意是否有代码存在XSS注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有XSS的风险,他们就能对你的localStorage肆意妄为。所以千万不要用它们存储你系统中的敏感数据。

localStorage和sessionStorage操作

localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等

localStorage和sessionStorage方法
setItem存储value

用途:将value存储到key字段

sessionStorage.setItem("key","value");  localStorage.setItem("site","js8.in");
getItem获取value

用途:获取指定key本地存储的值

var value=sessionStorage.getItem("key"); var site=localStorage.getItem("site");
removeItem删除key

用途:删除指定key本地存储的值

sessionStorage.removeItem("key");  localStorage.removeItem("site");
其他操作方法:点操作和[ ]

Web Storage不但可以用自身的setItem,getItem等方便存取,也可以像普通对象一样用点(.)操作符,及[]的方式进行数据存储,像如下的代码:

var storage = window.localStorage; storage.key1 = "hello";storage["key2"] = "world";
console.log(storage.key1);consloe.log(storage("key2");
localStorage和sessionStorage的key和length属性实现遍历

sessionStorage和localStorage提供的key()和length可以方便的实现存储的数据遍历,例如下面的代码:

var storage=window.localStorage;
for(var i=0;len=storage.length;i<len;i++){var key = storage.key(i);var value = storage.getItem(key);console.log(key+="="+value);
}

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

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

相关文章

重生之 SpringBoot3 入门保姆级学习(04、 包扫描)

重生之 SpringBoot3 入门保姆级学习&#xff08;04、 包扫描&#xff09; 2.1 包扫描 2.1 包扫描 默认包扫描规则&#xff1a; SpringBootApplication 标注的就是主程序 SpringBoot 只会扫描主程序下面的包 自动的 component-scan 功能 在 SpringBootApplication 添加参数可以…

前端开发工程师——AngularJS

一.表达式和语句 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

【C语言】char,short char,long char分别是多少字节,多少位,多少bit

一&#xff0c;char&#xff0c;short char&#xff0c;long char分别是多少字节 在 C 语言中&#xff0c;char、short、int、long 这些数据类型的大小是平台相关的&#xff0c;它们的大小取决于编译器和操作系统的实现。然而&#xff0c;它们的大小通常遵循以下规则&#xff…

创新融合,5G+工业操作系统引领未来工厂

为加速企业完成生产制造自动化和经营管理自动化&#xff0c;从而走向未来工厂&#xff0c;蓝卓不断探索supOS工业操作系统与前沿技术的的创新融合&#xff0c;而5G技术为工业操作系统提供了更多元化的赋能手段和想象空间。目前&#xff0c;supOS围绕生产、安全、质检、监控等领…

语音转文字软件哪个好?掌握这3个方法,告别手写记录

开会多又杂&#xff0c;手写记录累死人&#xff1f; 每天的工作日程中&#xff0c;会议总是不可或缺的一部分。不论是团队讨论还是项目汇报&#xff0c;会议记录都是必不可少的。但手写记录会议内容不仅耗时耗力&#xff0c;还容易遗漏重要信息。 那么&#xff0c;有没有更高…

张驰咨询:六西格玛培训,IT界的“福尔摩斯”

六西格玛&#xff0c;这个曾以制造业为背景的管理理念&#xff0c;如今却在IT领域大放异彩。其背后的原因&#xff0c;不仅仅是因为六西格玛追求零缺陷、持续改进的核心价值观与IT行业对产品质量和用户体验的极致追求不谋而合&#xff0c;更是因为它提供了一种全新的思维方式和…

2024.05.28|生信早报【AI测试版】

日期&#xff1a;2024-05-28 拓尔思&#xff1a;拓知全球基因专利数据库助力合成生物研发&#xff0c;规避专利申请风险。和元生物&#xff1a;连续亏损&#xff0c;累计亏损1.7亿元&#xff0c;基因治疗CRO业务推出新服务。国际生物多样性日&#xff1a;杭州打造“北纬30度生…

【pyTorch安装版本真麻烦】

1、pytorch 2.0.1版本可以用cuda11.7 # CUDA 11.7 conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda11.7 -c pytorch -c nvidia 2、pytorch 2.1 版本后最低cuda11.8 3、安装pytorch时候&#xff0c;注意torchaudio 版本 总之注意pyTorch安装版本…

C语言作为计算机行业的基础之一,是否制约了行业本身的发展?

c不是计算机行业的基础啦&#xff0c;你想&#xff0c;c语言出现时已经有一套成熟的计算机体系&#xff0c;有基于内存地址的寻找指令、数据的工作方式&#xff0c;有汇编语言&#xff0c;那搞出c这种高级语言就很正常啊&#xff01;刚好我有一些资料&#xff0c;是我根据网友给…

设计、运营与前端:三者间的微妙区别与联系

设计、运营与前端&#xff1a;三者间的微妙区别与联系 在数字化日益深入的今天&#xff0c;设计、运营与前端这三个词汇在我们的工作中频繁出现&#xff0c;它们似乎紧密相连&#xff0c;但又各具特色。本文将深入探讨这三者之间的微妙区别与联系&#xff0c;从四个方面、五个…

第三部分:领域驱动设计之分析模式和设计模式应用于模型

分析模式 分析模式是一种概念集合&#xff0c;用来表示业务建模中的常见结构。它可能只与一个领域有关&#xff0c;也可能跨越多个领域。“分析模式”这个名字本身就强调了其概念本质。分析模式并不是技术解决方案&#xff0c;他们只是些参考&#xff0c;用来指导人们设计特定领…

数仓建模—数据管理能力成熟度评估模型(DCMM)

文章目录 数仓建模—数据管理能力成熟度评估模型(DCMM)数据管理能力成熟度研究现状国外研究现状国内研究现状DCMM与其他数据管理体系有什么区别什么是DCMMDCMM 包含哪些内容DCMM等级评估等级划分什么样的企业可以申请DCMM评估DCMM评估流程评估细节评估方式评估类型评估参考标准…

西安航空学院电子工程学院领导莅临泰迪智能科技参观交流

5月26日&#xff0c;西安航空学院电子工程学院院长杨亚萍、专业教师刘坤莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、副总经理施兴、产品中心负责周东平、校企合作经理吴桂锋与泰迪智能科技韩伟进行热情了接待。双方就专业建设、协同…

浅谈配置元件之HTTP信息头管理器

浅谈配置元件之HTTP信息头管理器 在进行HTTP请求时&#xff0c;有时候需要模拟浏览器或其他客户端的行为&#xff0c;比如发送特定的HTTP头部信息。这时&#xff0c;HTTP信息头管理器&#xff08;HTTP Header Manager&#xff09;就显得尤为重要。它允许用户自定义HTTP请求中的…

Alamofire常见GET/POST等请求方式的使用,响应直接为json

Alamofire 官方仓库地址&#xff1a;https://github.com/Alamofire/Alamofire xcode中安装和使用&#xff1a;swift网络库Alamofire的安装及简单使用&#xff0c;苹果开发必备-CSDN博客 Alamofire是一个基于Swift语言开发的优秀网络请求库。它封装了底层的网络请求工作&…

前端加密的方式汇总

目录 一、Base64编码 二、哈希算法 三、对称加密(AES/DES) 四、非对称加密(RSA) 五、加盐 六、Web Cryptography API 七、总结 随着信息和数据安全重要性的日益凸显&#xff0c;如何保证信息数据在传输的过程中的安全成为开发者重点关注的内容。前端加密通常是指在浏览…

【必会面试题】synchronized锁升级的过程

目录 Java中的synchronized关键字用于实现同步控制&#xff0c;以保护共享资源免受并发访问的影响。为了提高性能&#xff0c;特别是针对多线程环境中的锁机制&#xff0c;Java引入了锁升级的概念。锁升级的过程主要是为了减少锁操作的开销&#xff0c;根据竞争情况动态地调整锁…

正邦科技(day1)

1&#xff1a;充电桩工作了两个半小时&#xff0c;已用电量13度电&#xff08;一般的话是一个小时7度电&#xff09; 2&#xff1a;火线&#xff08;红色&#xff0c;棕色&#xff09;&#xff0c;零线&#xff08;蓝色&#xff09; 3&#xff1a;充电桩工作了两个半小时&#…

【ARM+Codesys案例】RK3568 +Codesys 软PLC方案在电镀生产线的应用

1 电镀生产简介 电镀是一种比较重要的工艺&#xff0c;产品经过电镀工艺处理后&#xff0c;不仅产品质量获得提高&#xff0c;产品性能也会大幅度提高&#xff0c;同时延长了产品的使用时间。电镀生产线是指按一定的电镀生产工艺要求,将有关的各种电镀处理槽、电镀行车运动装置…

STM32_USART

1、USART简介 USART&#xff0c;即Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步/异步收发器。USART是STM32内部集成的硬件外设&#xff0c;可根据数据寄存器的一个字节数据自动生成数据帧时序&#xff0c;从TX引脚发送出去&#xff0c;也可自…