cookie,localStorage和sessionStorage的区别

> 基本概念

​ cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。

​ 当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 "Welcome Jacob!" 的欢迎词。而名字则是从 cookie 中取回的。这通常就是通过在 cookie 中存入一段辨别用户身份的数据来实现的。



​ 在HTML5之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。

​ 在HTML5中提供了两种在客户端存储数据的新方法:

sessionStorage

​ 为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。

localStorage

​ 同样的功能,但是在浏览器关闭,然后重新打开后,除非数据被清除,否则仍然存在。

> 三者的区别

特性cookiesessionStoragelocalStorage
数据生命期生成时就会被指定一个maxAge值,这就是cookie的生存周期,在这个周期内cookie有效,默认关闭浏览器失效页面会话期间可用除非数据被清除,否则一直存在
存放数据大小4K左右(因为每次http请求都会携带cookie)一般5M或更大详细看这(需科学上网)
与服务器通信由对服务器的请求来传递,每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题数据不是由每个服务器请求传递的,而是只有在请求时使用数据,不参与和服务器的通信
易用性cookie需要自己封装setCookie,getCookie可以用源生接口,也可再次封装来对Object和Array有更好的支持
共同点都是保存在浏览器端,和服务器端的session机制不同(这里有一篇很好的介绍cookie和session的文章

> 安全性问题

​ 无论是cookie还是HTML5的本地存储,都是相对不安全的,很容易受到各种各样的攻击,特别是HTML5的存储空间大,给了攻击者更大的发挥平台,所以都不能用来存储敏感信息。登录信息等重要信息还是存放到服务器里比较好。

> 参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值