Cookie
什么是Cookie?
Cookie 是一些数据, 存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:当用户访问 web 页面时,他的名字可以记录在 cookie 中。在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。
它的作用是什么呢?
首先需要知道,HTTP协议。http协议是网页传输协议,是超文本传输协议,无状态协议,而cookie是会话跟踪技术,就是用来记录http的状态的。
记录在哪?
记录在浏览器的缓存里,有一些限制,如下:
大小限制:4K±
数量限制:50±
时间限制:默认关闭浏览器就清除(会话级)
读取限制:不允许跨域,(路径,浏览器)
怎么记录呢?
这就涉及到了我们要说的重点了。cookie的用法。
核心操作在cookie的值的书写
cookie的值的要求:
key和value的格式:如:name=val
还要有配置信息:配置信息主要是如下两个:
有限期:expires
路径:path
配置信息和cookie的信息之间用;号隔开
cookie的增删改查
1、获取cookie的方式
document.cookie
2、设置cookie,也就是给cookie设置值。
document.cookie = "asdasd"
3、修改cookie,也就是给cookie设置新的值,没有那么复杂
document.cookie = "user=adasda;path=/1911";
4、删除cookie:过期时间,主动过期,可以都把有限期设置为昨天,这样就不用每次再思考了。
var d = new Date();
d.setDate(d.getData()-1);
document.cookie = "user=admin;expires="+d+";path=/";
document.cookie = "cookie的信息,将有限期设置为昨天"
cookie的封装
cookie的封装用处是很广的,大家需要牢记,(即使不会自己书写,可以总结出来保存下以备不时之需哦)
function setCookie(key,val,options){
//1.设置options的默认值为对象
options = options || {
};
// 2.解析options身上的path属性
var p = options.path ? ";path="+options.path : "";
// 3.解析options身上的expires属性
var e = "";
if(options.expires){
var d = new Date();
d.setDate(d.getDate()+options.expires);
e = ";expires="+d;
}
// 4.拼接字符,并设置coolie
document.cookie = key+"="+ val + p + e;
}
//删除cookie的方法
function removeCookie(key,options){
options = options || {
};
var d = new Date();
d.setDate(d.getDate()-1);
//设置cookie相同的名字,值无所谓,有限期修改。
setCookie(key,null,{
expires:-1,
path:options.path
})
}
获取cookie的封装
//获取cookie
function getCookie(key){
console.log(document.cookie.split("; "));
var arr = document.cookie.split("; ");//注意空格
for(var i =0;i<arr.length;i++){
//console.log(arr[i].split("="));
//console.log(arr[i].split("=")[0]);
if(arr[i].split("=")[0] == key){
return arr[i].split("=")[1];
}
}
return "";
}
console.log(getCookie("d"));
好多人即使了解到了cookie的封装,但是由于不是自己写出来的只是总结而已,可能不会用,我教大家几种简单用法,大家可以举一反三。
1、设置没有地址的cookie
setCookie("hah","jquba");
2、设置有有限期和地址的cookie
setCookie("user","admin",{
expires:4,
path:"/Myphp"
});
3、获取cookie
getCookie