Cookie简介
Cookie是存储于访问者计算机中的变量,用来存放一些数据(用于在客户端存储会话信息。)
1、什么是Cookie:
①、是指某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据。
②、Cookie是浏览器提供的一种机制,它将document对象的Cookie属性提供给JS,可以由JS对其进行控制,而不是JS本身的性质。Cookie是存于用户硬盘的一个文件,这个文件通常推向与一个域名,当浏览器再次访问这个域名时,便使这个Cookie可用,Cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。
③、特点:
a:存储的大小有限制:一般浏览器规定同源下最多只能存储4KB大小;
b:cookie有过期时间,时间我们自己可以来设置,一般不超过一个月;
c:cookie不稳定,因为我们可以使用安全卫士或垃圾清理功能把cookie移除掉;
d:用户可以根据自己的需求,开启无痕浏览或者隐身模式,这样cookie就不能j进行存储了;
e:cookie不是严格意义上的本地存储,它和服务期之间是有关联的;
2、Cookie的形式:以键值对的性质保存,以‘;’分隔name1=value1;name2=value2;
3、Cookie的属性组成:
①、名称:一个唯一确定Cookie的名称,Cookie的名称必须经过URI编码;//name
②、值:储存在Cookie中的字符串值,值必须被URI编码;//vlaue
③、域名:Cookie对于哪个域是有效的,所有向该域发送的请求中都会包含这个Cookie信息。//.wrox.com
④、路径:对于指定域中的那个路径,应该向服务器发送Cookie。//当前目录/
⑤、失效时间:表示Cookie何时被删除额时间戳;//Mon,22-Jan-07 07:10:24 GMT
⑥、安全标志:指定后,Cookie只有在使用SSL连接的时候才发送到服务器。
例如://secure
Set-Cookie:name=value;expires=Mon,22-Jan-07 07:10:24 GMT;domain=.wrox.com;path=/;secure
4、Cookie的主要用途:
①、保存用户登录状态;
②、跟踪用户行为;
③、创建购物车;
④、实施民意测验;
5、优缺点
Cookie的优点:
①、持久性;
②、与JS仪器使用操作;
③、使用本地存储,可以优化网站性能,避免频繁触发AJAX请求。
Cookie的缺点:
①、可被禁用,不安全;
②、不同浏览器的Cookie不可共享(一个网站一个Cookie)
如何操作Cookie
1、将Cookie写入到客户端
function setCookie(name,value){
var Days = 30;
var exp = new Date();//创建日期对象,默认是在浏览器关闭之后过期。
exp.setTime(exp.getTime() +Days*24*60*60*1000);//设置失效日期为24小时*30=30天
document.cookie = name+"=" +escape(value) +";expires=" + exp.toGMTString() +";path = /;domain = baidu.com";
}
escape():函数可对字符串进行编码,目的是让它可以在所有的计算机上读取该字符串,其中ASCII字母、数字、@*/+ ,这几个字符不会被编码;
注释:ECMAScript v3 反对使用该方法,应使用decodeURI() 和 decodeURIComponent() 替代它。
getTime():返回距1970年1月1日之间的毫秒数;
setTime():以毫秒数设置Date对象,向1970/1/1添加毫秒数;
toGMTString():方法可根据格林威治时间(GMT),把Date对象转换为字符串,并返回结果。
2、读取客户端的Cookie
function getCookie(name){
var arr,reg = new RegExp("(^|)" +name+ "([^;]*)(;|$)");//正则匹配
return unescape(arr[2]);
else return null;
}
unescape() :是对escape()编码的字符串进行解码,解码之后的内容为字符串。
new RegExp(); 创建一个正则表达式对象,该对象有三个方法test()、exec()、compile()
3、删除Cookie
function delCookie(name){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = getCookie(name);
if(cval != null)
document.cookie = name +"=" +cval +";expires" + exp.toGMTString() + ";/path = /";
}
调用示例:
setCookie("name","hayden");
alert(getCookie(name));
扩展:
encodeURI(): 函数可把字符串作为URI进行编码;
decodeURI(): 函数可对encodeURI()编码过的URI进行解码;
decodeURIComponent():函数可把字符串作为URI进行编码,解码范围比encodeURI()大
领取专属 10元无门槛券
私享最新 技术干货