7Cookie的使用

javascript提供了使用Cookies形式存储的客户端状态信息的能力。Cookies提供将信息存储在客户端且根据请求利用浏览器把这些信息传送到服务器的方法。


当用户第一次请求1个页面时,能够通过由服务器响应的头部内的Set-Cookie项将Cookie存储于浏览器。Set-Cookie字段包括存储在Cookie内的信息以及若干可选择的信息片,其中包括超期日期、路径、服务器信息以及Cookie是否需要安全。然后当用户以后请求1个页面时,如果在存储的所有Cookie中找到了相匹配的Cookie,浏览器向在请求的头部的内的服务器发送1个Cookie字段,该头部将包含存储于该Cookie中的信息。


Cookie与Set-Cookie
Set-Cookie与Cookie字段用相当简单的语法在客户与服务器之间传送有意义的信息。
Set-Cookie的格式为:
Set-Cookie:name=VALUE;expires=DATE;path=PATH;domain=DOMAIN;secure
name=VALUE项是唯一必须包括到Set-Cookie字段内的信息片。它是一个简单的字符串不能包含逗号、分号以及空格。
expires=DATE,去顶Cookie的超期日期,在该日期以后,Cookie将不再由客户端存储或传送到服务器。DATE的格式为Wdy,DD-Mon-YY HH:MM:SS GMT。expires的缺省值为当前Navigator会话的终止日期。
path=PATH,确定Cookies为有效的URL的路径部分,如果URL与path和domain均匹配,将Cookie传送到请求头部内的服务器。如果没有设置路径,path的值与设置Cookie的文档的路径相同。
domain=DOMAIN,确定Cookie为有效的URL的域部分,该特性的缺省值是设置Cookie的当前文档的域。
secure,确定Cookie应该仅通过安全连接传送。即用SSL协议传送到http服务器,称为https服务器。


相比而言,请求头部内的Cookie字段仅包含请求的URL的一系列名字-值对。
Cookie:name1=VALUE1;name=VALUE2....


对已经存在的Cookie具有相同名字与路径的Cookie会将以前的Cookie覆盖掉。


1在javascript中使用Cookie
在javascript中,可以由客户处理Cookie,javascript能够处理document对象的Cookie属性,Cookie属性拥有从页面的脚本的所有Cookie的特性,而且能够允许脚本设置新的Cookie。


Cookie属性仅包含1个字符串,该字符串的值能够在该页面的Cookie字段中向外传懂,作为字符串,像其他任何字符串字面量或变量一样,可以使用string对象的方法与属性处理。
通过给document.cookie赋值,就能够建立新的Cookie,赋给Cookie属性的字符串值应该在Set-Cookie头部字段中由服务器传送的值相同。
如下,建立名为Cookie1和Cookie2的两个Cookie
document.cookie="cookie1=First_cookie;expires=Mon,01-Jul-08 12:00:00 GMT";
document.cookie="cookie2=Second_cookie";
当然也可以利用相对于当前时间的偏移量来设置时间。如希望超期时间为1年以后。
expires=new Date();
expires.setTime(expires.getTime()+24*60*60*365*1000);
document.cookie="cookie2=Second.cookie;expires="+expires.toGMTString();


一个创建Cookie的函数
function newCookie(name,value){
document.cookie=name+"="+value+";expires=Fri,15-Junl-09 00:00:00 GMT";
}
获取Cookie函数:
function getCookie(name){
var cookieFound=false;
var start=0;
var end=0;
var cookieString=document.cookie;
var i=0;
while(i<=cookieString.length){
start=i;
end=start+name.length;
if(cookieString.substring(start,end)==name){
cookieFound=true;
break;
}
i++;
}
if(cookieFound){
start=end+1;
end=document.cookie.indexOf(";",start);
if(end<start)
end=document.cookie.length;
return document.cookie.substring(start,end);
}
else
return "";
}


删除Cookie
function DeleteCookie(name){
var exp=new Date()
exp.setTime(exp.getTime()-1)
var cval=GetCookie(name);
document.cookie=name+"="+cval+";expires="+exp.toGMTString();
}


javascript提供了escape()与unescape()两个方法,这两个方法以字符串作为变元,escape()返回像URL那样编码的字符串。unescape()将编码的字符串再转变成原来的形式。


213





















你可能感兴趣的:(JavaScript)