JS-cookie
2019-03-27 本文已影响239人
壹枕星河
cookie 会话跟踪技术
一个网站从打开到浏览(包括这个网站的其他子页面)到最后关闭浏览器整个过程叫一个“会话”。
cookie的存取
document.cookie = "username=zhangsan";
console.log(document.cookie);
注意:cookie是http/https协议下的技术,不支持本地file文件对cookie操作
cookie的时效: expires
var d = new Date();
d.setxxx(); //将d设置到过期的日期
document.cookie = "username=zhangsan;expires="+d;
cookie的特点
1.只能使用文本
2 单条存储有大小限制 4KB
3 数量限制(一般浏览器,限制大概在50条左右)
4 读取有域名限制 不可跨域读取,只能由来自 写入cookie的 同一域名 的网页可进行读取。
5 时效限制 每个cookie都有时效,最短的有效期是,会话级别:就是当浏览器关闭,那么cookie立即销毁
封装一个存取cookie的函数
/* cookie的操作(存取)
* @param key string 存取的key值
* @param [value] string 如果传入value,那么就是存cookie,不传就是取cookie
* @paran [option] object {expires, path}
* @return string 取cookie的时候返回的当前cookie的值
*/
cookie : function (key, value, option) {
if(value === undefined){
// 取cookie
var cookie = document.cookie;
var arr = cookie.split("; ");
var obj = {};
arr.forEach(function(ele){
var subarr = ele.split("=");
obj[subarr[0]] = decodeURIComponent(subarr[1]);
})
// 判断
return obj[key] ? obj[key] : "";
/* if(obj[key]){
return obj[key];
}else {
return "";
} */
}else{
//存
var str = key+"="+encodeURIComponent(value);
if(option){
// path
if(option.path){
str += ";path="+option.path;
}
if(option.expires) {
var date = new Date();
// 把过期日期设置为option.expires天之后
date.setDate(date.getDate() + option.expires);
str += ";expires=" + date;
}
}
document.cookie = str;
}
}