Cookie是什么:cookie是指存储在用户本地终端上的数据,同时它是与具体的web页面或者站点相关的。Cookie数据会自动在web浏览器和web服务器之间传输,也就是说HTTP请求发送时,会把保存在该请求域名下的所有cookie值发送给web服务器,因此服务器端脚本是可以读、写存储在客户端的cookie的操作。
cookie的有效期:cookie默认情况下的有效期是很短暂的,一旦用户关闭浏览器,cookie保存的数据就会丢失。如果想要延长cookie的有效期,可以通过设置HTTP头信息中的cache-control属性的max-age值,或者修改HTTP头信息中的expires属性的值来延长有效期。
cookie的作用域:它是通过文档源和文档路径来确定的。该作用域通过cookie的path和domain属性也是可配置的。默认情况下,cookie和创建它的web页面有关,并对该页面以及和该页面同目录或者子目录的其他页面可见。有时候,你可能希望让整个网站都能够使用cookie的值,而不管是哪个页面创建它。要满足这样的需求可以设置cookie的路径(设置cookie的path属性。例如,如果http://www.csh.com/cat/index.html页面创建了一个cookie,并且利用path属性将该路径设置成”/”,那么该cookie对任何http://www.csh.com这台web服务器上的页面都是可见的)。cookie的作用域默认由文档源限制。但是,有的大型网站想要子域之间能够互相共享cookie(例如,www.csh.com域名的的服务器想要读取mmm.csh.com域下设置的cookie值,这就需要通过设置cookie的domain属性来达到目的)。
cookie的数目和大小的限制:每个web服务器(域名)保存的cookie数不能超过50个,每个cookie保存的数据不能超过4KB,如果超过了4KB,服务器会处理不了。
//添加新的cookie function addCookie(objName,objValue,objHours){ var str = objName + "=" + escape(objValue); //为0时不设定过期时间,浏览器关闭时cookie自动消失 if(objHours > 0){ var date = new Date(); var ms = objHours*3600*1000; date.setTime(date.getTime() + ms); str += "; expires=" + date.toString(); } document.cookie = str; };
//获取指定名称的cookie的值 function getCookie(objName){ var arrStr = document.cookie.split("; "); for(var i = 0;i < arrStr.length;i ++){ var temp = arrStr[i].split("="); if(temp[0] == objName) return unescape(temp[1]); } };
//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间 function delCookie(name){ var date = new Date(); date.setTime(date.getTime() - 10000); document.cookie = name + "=a; expires=" + date.toString(); };