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');
})();
posted @ 2012-04-14 11:18  老去的JAVA程序员  阅读(114)  评论(0编辑  收藏  举报