2)浏览器之本地存储

304 阅读2分钟

浏览器存储类别

  • cookie
  • localStorage
  • sessionStore
  • indexDb

cookie

什么是cookie?

Cookie是服务器委托浏览器存储的一些数据,它让服务器有了记忆能力,会再浏览器下次请求时携带并发送到服务器上

cookie的生存周期

  • expires:过期时间,时间戳,尼格林治时间
  • Max-Age:用的时相对时间,单位是秒,浏览器接收到报文的时间点再加上Max-Age,就可以得到失效的绝对时间 【祝】Expires和Max-Age可以同时出现,Max-Age优先级更高

cookie的作用域

  • Domain和Path指定了cookie所属的域名和路径,浏览器在发送Cookie前会从URI中提取出host和path部分,对比Cookie属性如果不满足就不回在请求头中发送Cookie

Cookie的安全性

  • HttpOnly: Cookie只能通过浏览器Http协议传输,禁止其它方式访问,比如JS访问Cookie,减少XSS攻击
  • SameSite:可以防范XSRF(跨站请求伪造)攻击,可以设置Strict严格限定不能随着跳转链接跨站发送,设置Lax则略宽松一点允许get/Head方法携带,post方式禁止
  • Secure: 只允许https协议加密传输

cookie的特点

  • 数据生命周期: 一般由服务器生成,可以设置过期时间
  • 数据存储大小: Cookie的大小受限一般是4Kb
  • 与服务器通信:每次发起同域下的HTTP请求时子在,header中携带Cookie

image.png

localStorage

浏览器中持久化存储方式,以键值对的方式存储数据,按域名将数据分别保存

localStorage的特点

  • 生命周期:除非被清理否则会一直村子
  • 数据存储的大小:5M

localStorage的使用

//设置数据 setItem()
localStorage.setItem('name','vincent')

//获取数据 getItem()
localStore.getItem('name')

//移除数据 removeItem()
localStore.removeItem('name')

//清楚数据 clearItem()
localStorage.clear()

一个可以定时过期的功能

(function(){
    let getItem = loaclStorage.getItem.bind(localStorage)
    let setItem = localStorage.setItem.bind(localStorage)
    let removeItem = localStorage.removeItem.bind(localStorage)
    localStorage.getItem = function(keyName){
        let expires = getItem(keyName+'_expires')
        if(expires && new Date()>new Date(Number(expires))){
        removeItem(keyName)
    }
    
    
})