在使用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;