Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于RFC2109(已废弃),最新取代的规范是RFC2965。
这是百度百科上搜索出来的 JS也提供了操作浏览器cookie的方法,通过此方法我们可以记录一些用户的偏好设置或者默认属性用来使界面交互更加友好
ok 言归正传 总体来说js提供一个对象 document.cookie
一、document.cookie
cookie 是一个键值对 KEY/value的形式,假设我们可以设置用户的默认城市为北京
则可以document.cookie ="CITY=BEIJING"; 这样的话cookie就保存在浏览器中去了
tips :1.value中的值有=时候我们需要escape一下(或者出于安全性加密)在cookie 的KEY中不能使用分号(;)、逗号(,)、等号(=)
2.cookie(expires) 有一个属性是过期的时间 一般是用GMT格式的时间来标识此过期的时间 例如
(document.cookie ="CITY=BEIJING;expires="+date.toGMTString(); )(date 就是date.getTime()+delayTime[需要延迟的时间])
3:cookie 每一次指定时候如果key存在的话是自动覆盖的
为了方便就封装几个函数对cookie的操作
var Cookie={
AddCookie:function(key,value,expiresHours){
var cookieString=key+"="+escape(value);
if(expiresHours>0){
var date=new Date();
date.setTime(date.getTime+expiresHours*3600*1000); //cookie 设置延迟的时间 以expiresHours小时为例
cookieString=cookieString+"; expires="+date.toGMTString();
}
document.cookie=cookieString;
},
GetCookie:function(name){
var arrCookie=document.cookie.split(';');
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split('=');
if(arr[0].replace(' ','')===name){ //键值对的判断
return arr[1];
}
}
return "";
},
DeleteCookie:function(name){
var date=new Date();
date.setTime(date.getTime()-1000);
document.cookie=name+"=v;expires="+date.toGMTString();
}
}
二、一些后续
指定可访问cookie的路径
默认情况下,如果在某个页面创建了一个cookie,那么该页面所在目录中的其他页面也可以访问该cookie。如果这个目录下还有子目录,则在子目录中也可以访问。例如在www.xxxx.com/html/a.html中所创建的cookie,可以被www.xxxx.com/html/b.html或www.xxx.com/ html/ some/c.html所访问,但不能被www.xxxx.com/d.html访问。为了控制cookie可以访问的目录,需要使用path参数设置cookie,语法如下:document.cookie="name=value; path=cookieDir";其中cookieDir表示可访问cookie的目录。例如:document.cookie="userId=320; path=/shop";
就表示当前cookie仅能在shop目录下使用。如果要使cookie在整个网站下可用,可以将cookie_dir指定为根目录,例如:复制代码 代码如下:document.cookie="userId=320; path=/";
指定可访问cookie的主机名和路径类似,主机名是指同一个域下的不同主机,例如:www.google.com和gmail.google.com就是两个不同的主机名。默认情况下,一个主机中创建的cookie在另一个主机下是不能被访问的,但可以通过domain参数来实现对其的控制,其语法格式为:document.cookie="name=value; domain=cookieDomain";
以google为例,要实现跨主机访问,可以写为:document.cookie="name=value;domain=.google.com";
这样,所有google.com下的主机都可以访问该cookie。