美文网首页让前端飞Web前端之路
探究Cookie、LocalStorage与SessionStr

探究Cookie、LocalStorage与SessionStr

作者: cce117b0a0ce | 来源:发表于2018-05-30 11:04 被阅读12次

    探究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在当前会话有效,关闭页面或浏览器后被清除

    相关文章

      网友评论

        本文标题:探究Cookie、LocalStorage与SessionStr

        本文链接:https://www.haomeiwen.com/subject/jbjtsftx.html