Cookie浅析
在JS里,内置于BOM对象有一种称为Cookie的对象,它形如:
name=**;domain=**;path=**;....
在FireFox浏览器里可以通过编辑 ->首选项->隐私->自定义历史记录设置里,查看cookie的值等
设置和查询、删除cookie的方法如下所示:
var CookieUtil={
/**
* 获取指定名称的cookie的值
*/
get:function(name){
var cookieName=encodeURIComponent(name)+"=";
var cookieStart=document.cookie.indexOf(cookieName);
var cookieValue=null;
if(cookieStart>=-1){
var cookieEnd=document.cookie.indexOf(";", cookieStart);
if(cookieEnd==-1){
cookieEnd=document.cookie.length;
}
cookieValue=decodeURIComponent(document.cookie.substring(cookieStart, cookieEnd));
}
return cookieValue;
},
/**
* 设置cookie
* 形如name=**;expires=**;domain=**;secure
*
* @param name Cookie的名称
* @param value Cookie的值
* @param expires Cookie的过期时间
* @param path 对于指定域,才会向服务器发送cookie
* @param domain Cookie对于哪个域是有效的,所有向该域发送的请求里都会包含这个cookie信息
* @param secure 指定后,cookie只有在使用ssl连接的时候才会发送到服务器(https以SSL为基础)
*/
set:function(name,value,expires,path,domain,secure){
var cookieText=encodeURIComponent(name)+"="+encodeURIComponent(value);
if(expires instanceof Date){
cookieText+=";expires="+expires.toGMTString();
}
if(path){
cookieText+=";path="+path;
}
if(domain){
cookieText+=";domain="+domain;
}
if(secure){
cookieText+=";secure";
}
document.cookie=cookieText;
},
//取消cookie
unset:function(name, value, path, domain, secure){
this.set(name, value, new Date(0), path, domain, secure);
}
};
调用的例子如下所示:
(function(){
CookieUtil.set('name', 'Nicholas');
CookieUtil.set('book','thinking in java');
console.log('Cookie:'+CookieUtil.get('name'));
console.log('Cookie:'+CookieUtil.get('book'));
CookieUtil.unset('name');
CookieUtil.unset('book');
CookieUtil.set('book', 'thinking in python', new Date('January 1,2013'), '/book/','http://wrox.com');
})();

浙公网安备 33010602011771号