cookie

cookie 其实是个后端技术

指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常是经过加密的)

服务器本身是没有记录客户端身份的方法的。

以前是字字千金,一个域下只能设置几十个,而现在据说有5M(5兆)

 

对于前端来说,种cookie就是给document设置了一个叫做cookie的自定义属性,这个属性能被所有浏览器识别,并缓存在浏览器中。

写(设置)cookie 一定要在服务器环境下运行。

设置 cookie :

  document.cookie = key = val

  设置 cookie 都会调用 toString 

读取:

  document.cookie

  返回的结果是把这个域中所有的cookie都显示出来了。每个key=val 都是以 (分号加空格)分割的

cookie 的默认生命周期是当浏览器关闭以后就结束。不过可以通过 expires 去设置生命周期

  比如:  document.cookie = ' name=xyf2 ' + ' expires= ' + 未来的时间点

 

哪里会用到cookie ?? :

  猜你喜欢、身份验证、每日推荐、免登陆。。。

 

cookie的好处:

  1.生命周期是可以设置的。而 localStorage 的内容只要不清一直都在。

  2.可以把常用的重要的数据缓存起来,减少 http 请求

 

cookie 的设置、获取、移除

    function getCookie(key){//获取cookie的时候,会把所有的cookie都获取出来,并且以分号加空格(; )来划分每一个cookie
        let c = document.cookie.split('; ');//获取到一堆cookie后用分号加空格切一刀
        let on = false;
        for(let i of c){
            let arr = i.split('=');//每条数据都有‘name’=‘val’,所以在用(=)切一刀
            if(arr[0] === key){
                on = true;
                return arr[1];
            }
        }
        if(!on)return null;
    }

    function setCookie(key,val,obj={}){
        let d = new Date();
        let {name,time} = obj;//解构赋值
        switch(name){
            case 'date' :
                d.setDate(d.getDate() + time);//这行的console 结果是时间戳
            break;
            case 'minu' :
                d.setMinutes(d.getMinutes() + time);
            break;
            case 'hour' :
                d.setHours(d.getHours() + time);
            break;
        }
        document.cookie = key +'='+ JSON.stringify(val) + (obj.time?'; expires='+ d.toUTCString:'');//拼接cookie
//d.toUTCString 时间到了刷新页面就清除cookie,只用 d 需要关闭页面再打开才会清除过期的cookie 
    }
    // setCookie('age',12);
    // setCookie('age',12,{name:'hour',time:5});
    // console.log(getCookie('name'));

    function rmCookie(key,val){//删除cookie,也可以直接在控制台中删,也可以给cookie设置时间,时间到了就会移除
        setCookie(key,val,{name:'date',time:-1}); //根据key来得到需要删除的cookie,将该cookie设置截止时间为负数即可
    }

    let arr = {a:1};
    setCookie('name',arr,{name:'date',time:1});

    console.log( getCookie('name'));

 

 

 

2018-12-14

posted @ 2018-12-14 11:14  真的想不出来  阅读(1866)  评论(0编辑  收藏  举报