为了账号安全,请及时绑定邮箱和手机立即绑定

探究Cookie、LocalStorage与SessionStroage

标签:
Html/CSS

探究Cookie、LocalStorage与SessionStroage

概念

Cookie

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。

因为HTTP协议是无状态的,也就是服务器不知道用户上一次做了什么,例如用户浏览网上商城,在结账时,由于HTTP协议的无状态性,所以服务器不知道他买了什么,所以Cookie就是用来绕开HTTP的无状态性的额外手段之一。服务器可以设置或读取Cookie中包含的信息,借此来维护用户跟服务器回话的状态。

  • 像上面的购物场景,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。结账时,服务器读取发送过来的Cookie。

  • 另一个典型应用是登陆一个网站时,服务器会请求用户输入账号密码,当勾选自动登陆时,下次会自动登陆,这是在上次登陆时,服务器发送了Cookie到用户的硬盘上。第二次登陆,如果Cookie未到期,浏览器会发送Cookie,服务器验证就可以直接登陆了。

缺陷

  1. Cookie会附加在HTTP请求中,加大流量。

  2. Cookie在HTTP请求中是明文传递,有安全隐患,用HTTPS可以避免这个问题

  3. Cokkie 大小为4kb左右

WebStorage

属性

  • Storage.length返回保存的数据项个数

    window.localStorage.setItem('foo', 'a');    window.localStorage.setItem('bar', 'b');    window.localStorage.setItem('baz', 'c');    window.localStorage.length // 3

方法

  • Storage.setItem() 方法用于存入数据。它接受两个参数,第一个是键名,第二个是保存的数据。如果键名已经存在,该方法会更新已有的键值。该方法没有返回值。

    window.sessionStorage.setItem('key', 'value');    window.localStorage.setItem('key', 'value');    //写入不一定要用这个方法,直接赋值也是可以的。
    // 下面三种写法等价
    window.localStorage.foo = '123';    window.localStorage['foo'] = '123';    window.localStorage.setItem('foo', '123');
  • Storage.getItem()方法用于读取数据。它只有一个参数,就是键名。如果键名不存在,该方法返回null

    window.sessionStorage.getItem('key')    window.localStorage.getItem('key')
  • Storage.removeItem()方法用于清除某个键名对应的键值。它接受键名作为参数,如果键名不存在,该方法不会做任何事情。

    sessionStorage.removeItem('key');
    localStorage.removeItem('key');
  • Storage.clear()方法用于清除所有保存的数据。该方法的返回值是undefined

    window.sessionStorage.clear()    window.localStorage.clear()
  • Storage.key()接受一个整数作为参数(从零开始),返回该位置对应的键值。

    window.sessionStorage.setItem('key', 'value');    window.sessionStorage.key(0) // "key"

区别与相同点

  • 大小一般为5MB,都在客户端(浏览器)中保存,不参与服务器通讯。

  • localStroage可以永久保存,除非被清除。

  • sessionStroage在当前会话有效,关闭页面或浏览器后被清除



作者:宿雨jj
链接:https://www.jianshu.com/p/fee2fc40fd85


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消