封装cookie,自定义过期时间,domain,path

  在使用Cookie进行存储的时候,遇到了许多不可思议的bug,特地标识出来,以作总结。

  是这样一个项目,登录是放在官网进行操作的,而登录进入的是后台,后台和官网属于同一域名的不同目录,那么常规进行cookie进行存储的话,在后台则会访问不到这个cookie,所以需要配置domain和path。

class Cookie {
    constructor() {
        this.setItem = this.setItem.bind(this);
    }
    static getItem(objName) {
        let arrStr = document.cookie.split("; ");
        for (let i = 0; i < arrStr.length; i++) {
            let temp = arrStr[i].split("=");
            if (temp[0] == objName) return unescape(temp[1]);
        }
    }
    static setItem(name, val,obj= { expire : 86400 , domain : document.domain,path:'/'}) {
        let {
            expire,
            domain,
            path
        } = obj;
        if(!expire){
            expire=86400;
        }
        if(!domain){
            domain=document.domain;
        }
        if(!path){
            path='/';
        }
        let str = name + "=" + escape(val) + ";domain=" + domain + ";path=" + path + ";";
        let date = new Date();
        date.setTime(date.getTime() + expire * 1000);
        str += ";expires=" + date.toUTCString();
        document.cookie = str;
    }
    static removeItem(name, obj={domain:document.domain,path:'/'}) {
        let {
            domain,
            path
        } = obj;
        if(!domain){
            domain=document.domain;
        }
        if(!path){
            path='/';
        }
        this.setItem(name, 'expire', {
            domain,
            path,
            expire: -86400,
        });
    }
}
export default Cookie;
原文地址:https://www.cnblogs.com/gitByLegend/p/11057057.html