cookie的概念
Javascript是运行在客户端的脚本,Session运行在服务端,所以Javascript不能操作Session,cookie运行在客户端,具有和Session类似的效果,可以被Javascript操作。 cookie是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。cookie是一段以键值对形式(key=value)保存在计算机硬盘上的字符串信息,各个cookie之间用分号加空格隔开。cookie存储容量大概4kb,不同浏览器存在微小差异。cookie存在有效期,默认有效期是从cookie生成到浏览器关闭,有效期也可以自定义。Javascript中cookie名称区分大小写。
cookie的应用
cookie最典型的应用是判断用户是否登陆网站。还有一个重要应用场合是"购物车"(用户可能会在一段时间内在同一家网站的不同页面中选择不同商品,这些信息都会写入Cookies,以便在最后付款时提取信息)。
设置cookie:
document.cookie="name=123" //将cookie写入客户端
document.cookie="name=123;word=123;" //只能设置name=123(一条语句只能同时设置一个cookie)
获取cookie:
function getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); else return null; }
删除cookie
//删除cookie需要将失效日期设置为过去的时间点
function delCookie(name) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); //将时间转换成GMT格式的字符串 }
给cookie设置失效日期
expires表示cookie的失效日期。如果省略expires或将其设置为0或负值,浏览器关闭时cookie失效。cookie失效前,即使重启电脑也不会丢失。expires不可读,在Javascript中使用document.cookie不会显示出expires。expires值应该使用GMT格式的时间字符串(GMT即格林尼治标准时间,现在也称为UTC即全球标准时间)。
//在Javascript中使用expires时应该和cookie同时写入,如: document.cookie = "num=123;expires=" + exp; //而如下写法是不正确的: document.cookie = "num=123"; document.cookie = "expires=" + exp; //这样写会形成两个cookie,第二个cookie的名称是expires,两个cookie均没有指定失效日期。
function setCookie(name, value) { var date = new Date(); //获取当前时间 var exp = 10; //expiresDays缩写exp(有效时间) date.setTime(date.getTime() + exp * 24 * 3600 * 1000); //格式化为cookie识别的时间 document.cookie=escape(name) + "=" + escape(value) + ";expires="+date.toGMTString(); //将name设置为10天后过期,超过这个时间name这条cookie会消失 }
1、toGMTString()方法可根据格林尼治时间(GMT)将Date对象转换为GMT格式的字符串
2、escape()函数可对字符串进行编码,这样就可以在所有计算机上读取该字符串。该方法不会对ASCII字母和数字进行编码,也不会对*@-_+./。这些ASCII标点符号进行编码,其他所有字符
都会被转义序列替换。
3、unescape()函数可以对escape()编码的字符串进行解码。