cookie

1.cookie的概念

cookie(会话跟踪技术),相当于第一次跟服务器连接后,服务器给你发的一个身份牌,上面可以记录跟你有关的信息(是否登录,购物车等等信息),以后只要再跟服务器通信,必须带着这个令牌,这样一来,服务器会直接知道你身份牌上所有的信息。

 cookie存在浏览器的缓存中。
 什么是缓存?数据交换的缓冲区----临时储存
 
2.cookie的特点
1.只能使用文本文件(如果浏览器可以随意在客户端机器生成文件,比如身份令牌,那将是个定时炸弹,安全问题会变得非常严重)
 
2.文件有大小限制4K(文件若没有大小限制,相当于身份令牌重几百斤,挂在脖子上什么感觉?)
 
3.数量限制,小于50条(一般浏览器限制大概在50条左右,门禁卡里能存下一部蓝光高清么)
 
4.读取有域名限制(不可跨域读取,只能由写入cookie的 同一域名 的网页进行读取。简单来说,谁写的cookie,谁才有权利读取)
 
5.时效限制(每个cookie有时效,最短的有效期是:会话级别(关闭浏览器,cookie销毁);
2.cookie的使用
  设置
        会话级默认路径:
        document.cookie = "name=abc"
        cookie的格式要求,名称=值
        在cookie 的名或值 中 不能使用分号(;)、逗号(,)、等号(=)以及空格这是cookie的赋值规则
        
        指定有效期:
        设置cookie的保存时间,通过给expires添加一个日期,设置cookie的过期时间
        此处可以借用Date();
        var date = new Date();
        date.setDate(date.getDate()+28);
        表示获取当前日期的天数,增加28天之后,重新设置给日期,此时date就表示未来的某个时间
 
        document.cookie = "name=abc;expires=" + date;
        此句表示,此条cookie在date的时间时效,而date的时间为当前日期加上28,也就是28天之后cookie失效
        
        指定路径:
        document.cookie = "user=admin;path=/;expires="+d;
 
    获取
        var str = document.cookie;
        str返回当前cookie的值,以字符串的形式
    
    删除
        删除cookie,相当于将cookie的有效时间设置为负。
3.cookie的封装
  设置
 function setCookie(key,value,options){
      options = options ||{};
      var path = options.path?";path="+options.path:"";
      var exp="";
      if(options.expires){
          var d =new Date();
          d.setDate(d.getDate()+options.expires)
          exp = ";expires = "+d;
      }
      document.cookie = `${key}=${value}${exp}${path}`
  }
setCookie("a","1");
  setCookie("b","2",{});
  setCookie("c","3",{path:"/"});
  setCookie("d","4",{ expires: 3,});
  setCookie("e","5",{ expires: 3,path:"/"})

删除

function removeCookie(key,options){
    options = options ||{};
    options.expires = -1;
   setCookie(key,null,options);
}
removeCookie("c",)

获取

function getCookie(key){
    var cookie=document.cookie;
   var arr = cookie.split("; ");
   for(var i=0;i<arr.length;i++){
       if(arr[i].split("=")[0] == key){
           return (arr[i].split("=")[1])
       }
   }
  return "";
}
console.log(getCookie("a"))

 

 

posted @ 2019-11-02 15:18  ZL_light  阅读(153)  评论(0编辑  收藏  举报