前端笔记饥人谷技术博客

cookie & session & local

2018-04-03  本文已影响1人  好奇男孩

cookie

document.cookie
"CONSENT=YES+HK.zh-CN+20171217-09-0; APISID=RZtL-ilrzVaXbd9g/AFwJ-gcAlNrwiyi_r; SAPISID=9xvOHFFgwpLgBSRn/ANzvjCQTYJZmu7W1N; SID=6wXQVnPJike66M7n8IVuPI_CCcj3ObwfmnsynuOsm0vyYa58eokha63tv6em_-OQFGugKQ.; 1P_JAR=2018-4-3-1"
2.png

一般浏览器存储cookie 最大容量为4k,所以大量数据不要存到cookie。

设置cookie时的参数:

session

总结一下:

cookie 是存储在浏览器里的一小段「数据」,它的主要用途有保存登录信息,而session是一种让服务器能识别某个用户的「机制」,session 在实现的过程中需要使用cookie。当然有时候说到 session 也指服务器里创建的那个和用户身份关联的对象。

localStorage

sessionStorage

sessionStorage 与 localStorage 的接口类似,但保存数据的生命周期与 localStorage 不同。做过后端开发的同学应该知道 Session 这个词的意思,直译过来是“会话”。而 sessionStorage 是一个前端的概念,它只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但当页面关闭后,sessionStorage 中的数据就会被清空。

三者的异同

3.png

应用场景

安全性

需要注意的是,不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据。

范例

使用 localStorage封装一个 Storage 对象

var Storage = (function(){
  return {
    set: function(key, value, expireSeconds){
      localStorage[key] = JSON.stringify({
        value: value, 
        expired: expireSeconds===undefined?undefined:Date.now() + 1000*expireSeconds
      })
    },
    get: function(key){
      if(localStorage[key] === undefined){
        return
      }
      var o = JSON.parse(localStorage[key])
      if(o.expired === undefined || Date.now() < o.expired){
        return o.value
      }else{
        delete localStorage[key]
      }
    }
 }
})()
Storage.set("name","xiaohui")
Storage.get("name")
"xiaohui"
Storage.set('age',2,30)//  如果不超过30秒,返回数字类型的2;如果超过30秒,返回 undefined,并且 localStorage 里清除 age 字段
Storage.get("age")
2

作者:彭荣辉
链接:https://www.jianshu.com/u/0f804364a8a8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

上一篇下一篇

猜你喜欢

热点阅读