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"))