JavaScript本地存储的几种方式?区别和应用场景?cookie,localstorage,sessionStorage

news/2024/7/5 6:59:19

参考这个

1.相同点是都是保存在浏览器端、且同源的

2.cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,而sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下

3.存储大小限制也不同,cookie数据不能超过4K,同时因为每次http请求都会携带cookie、所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大

4.数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭之前有效;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie:只在设置的cookie过期时间之前有效,即使窗口关闭或浏览器关闭

5.作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localstorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的

6.sessionStorage和localStorage支持事件通知机制,可以将数据更新的通知发送给监听者

7.sessionStorage和localStorage的api接口使用更方便

Cookie的优缺点?

优点:

1.极高的扩展性和可用性

2.通过编程方式,控制保存在cookie中的session对象的大小

3.通过加密和SSL(安全传输技术),减少cookie被破解的可能性

4.只在cookie中存放不敏感数据,被盗也不会有重大的损失

5.控制cookie的生命周期,可用让其永远有效,偷盗者就有可能拿到一个过期的cookie

缺点:

1.cookie数量和长度的限制,每个最多只能有20条的cookie,长度不能超过4kb,超过就会被截取

2.安全性问题,被人拦截,就可以得到cookie的所有信息,只要原样转发就可以达到目的


http://www.niftyadmin.cn/n/3693612.html

相关文章

遍历页面上的所有控件

/// /// 采用递归的方法来遍历页面控件 /// /// protected void ErgodicChildrenControls(Control parent){foreach (Control c in parent.Controls){//此处写有关控件的代码,例如 //if (c is HtmlInputButton) // { // HtmlInputButt…

JS办法处理CheckBoxList生成的br

昨天在项目发现CheckBoxList 也有些问题RepeatDirection"Horizontal" <asp:CheckBoxList ID"CheckBoxList" runat"server" RepeatLayout"Flow" RepeatColumns"5" RepeatDirection"Horizontal" CellSpacing&q…

创建控件时出错/lm/w3svc/... 不是一个有效的iis应用程序 的解决办法

环境&#xff1a;vs2005&#xff0c;asp.net web 应用程序&#xff08;项目&#xff09;&#xff0c;IIS作为发布服务器 导致原因&#xff1a;是项目的属性配置中&#xff0c;“服务器”的设置中与IIS中的虚拟目录不一致导致。 解决办法&#xff1a;按项目属性的中的“服务器”…

onscroll事件导致flash叠影效果--setTimeout的妙用

飘动对联广告加到页面中&#xff0c;出现flash有叠影的效果&#xff0c;最终原因是因为onscroll事件的问题&#xff0c;加了一个setTimeout 延时解决问题了原先&#xff1a;function scall(){.......}window.οnresizescall;window.οnlοadscall;现在&#xff1a;function sca…

无限分级数量查询优化

无限分级的数据查询是个头痛的问题&#xff0c;递归查询类别&#xff0c;再组合成字符串&#xff0c;用 in 来解决子类所有产品的问题&#xff0c;但是这个效率太低&#xff0c;低的让人无法接受&#xff0c;在此&#xff0c;有一个SQL的方法&#xff0c;可让我们提高效率。---…

Asp.Net Web项目打包

1、打开你的项目&#xff0c;在<解决方案管理器>中用鼠标右击你的<解决方案>&#xff0c;选择<添加>-<新建项目>。2、<添加新项目>对话框中选择<安装和部署项目>-<web安装项目>。&#xff08;注意&#xff1a;<web安装项目>的…

刷题总结9.6

在一个表单中&#xff0c;如果想要给输入框添加一个输入验证&#xff0c;可以用下面的哪个事件实现&#xff1f; change可以用作输入验证的事件&#xff0c;change(fn)只是一种实现方式&#xff0c;还有其他实现方式&#xff1a; 原生js的onchange属性&#xff0c; html属性on…