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