COOKIE
COOKIE,有时候也用其复数形式COOKIEs,指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(经常通过加密)。定义于RFC2109和2965都已废弃,最新取代的规范是RFC6265。
COOKIE的作用
服务器可以利用COOKIE包含信息的任意性来筛选经常性维护这些信息,以判断在HTTP传输中的状态。COOKIE最典型的英语是判断注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录步骤,浙西都是COOKIE的功能。另一个重要张合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入COOKIE,以便在最后付款时提取信息。
js设置COOKIE
document.COOKIE="key=value"
//例
document.COOKIE="name=weiqi"//可以在控制台中打印出COOKIE
console.log(document.COOKIE)
如何修改和获取COOKIE
js中并没有提供获取COOKIE的方法,所以只能自己封装方法,相同的key的COOKIE只能存在一个,如果定义了一个document.COOKIE="age=21"
,后面又定义了document.COOKIE="age=30"
,那么后面定义的COOKIE会覆盖前面定义的COOKIE,所以修改COOKIE值的时候只用重新定义个key相同的COOKIE就可以了。那么获取COOKIE的时候也只用在COOKIE中获取到这个key后面的“=”和“;”直接的字符串,那就是这个COOKIE的值了,获取的方法又很多种,这里我写一种比较简单的:
function getCOOKIE(key){var index = document.COOKIE.indexOf(key);var returnValue;if(index!==-1){var tIndex = document.COOKIE.indexOf(";",index);var target = document.COOKIE.substring(index,tIndex);var returnValue = decodeURIComponent(target.replace(key+"=",""))}return returnValue;
}document.COOKIE="name=weiqi";
getCOOKIE("name");
删除COOKIE
COOKIE是有有效期的,前面我们设置COOKIE的时候都没有设置有效期,如果我们将COOKIE的有效期设置成一个已经过去的时间,那么它就无效了,下面来实现一下:
function delCOOKIE(key){var d = new Date();document.COOKIE=key+"=;expires="+ d.toGMTString();
}document.COOKIE="name=weiqi";
delCOOKIE("name");
给COOKIE设置一个有效期
通过expires给COOKIE设置一个有效期,现在我们设置一个COOKIE的有效期是10天,如下:
var d = new Date();
var time = 10;
d.setTime(d.getTime()+time*1000*60*60*24);
document.COOKIE="name=weiqi;expires="+ d.toGMTString();
封装COOKIE
将自定义的一些方法完善一下封装成一个对象,这样在使用的时候就可以直接拿来用了:
var COOKIE = {setCOOKIE:function(key,value,time){if(key == undefined){return;}if(time!== undefined){var d = new Date();d.setTime(d.getTime()+time*1000*60*60*24);document.COOKIE=key+"="+value+";expires="+ d.toGMTString();}else{document.COOKIE=key+"="+value;}},getCOOKIE:function(key){var index = document.COOKIE.indexOf(key);var returnValue;if(index!==-1){var tIndex = document.COOKIE.indexOf(";",index);var target = document.COOKIE.substring(index,tIndex);var returnValue = decodeURIComponent(target.replace(key+"=",""))}return returnValue;},delCOOKIE:function(key){var d = new Date();document.COOKIE=key+"=;expires="+ d.toGMTString();}
}
COOKIE.setCOOKIE("home")
COOKIE.setCOOKIE("name","卫旗");
COOKIE.setCOOKIE("age",22);
COOKIE.setCOOKIE("sex","男")
COOKIE.getCOOKIE("sex")
COOKIE.delCOOKIE("age")