JavaScript Cookie

javascript创建cookie:document.cookie="cookieString"。

cookie字符串包括6个部分:名称、值、过期时间、路径、域、安全性。(name、value、expires、path、domain、secure)

cookie字符串的一般形式为:"name=value;expires=Tue, 28 Dec 2020 00:00:00 GMT;path=/directory;domain=d.com;secure=false"。每个部分用分号隔开。其中,name和value是必需的,其他都是可选的。

注意:由于每个部分使用逗号分隔,因此,如果某个部分的值里包含逗号,那么将会产生错误。解决方法是,使用window.escape(string)方法对每个部分的值进行编码。

名值对:cookie要保存的信息。通过名称可以获得值。

过期时间:如果没有设置过期时间(expires),那么浏览器关闭后cookie就过期。而且,expires的值必须是标准的UTC(或GMT)形式。可以使用Date对象的toUTCString()方法获取一个日期的UTC形式。

路径:cookie是特定于域和路径的。在一个页面中创建的cookie,默认情况下只有这个页面所在目录下的页面可以访问到。可以通过设置path来指定某个路径可以访问到这个cookie。path指定目录及其子目录都可以访问。当path被设置为path=/时,当前域名下的所有站点都可以访问到这个cookie。

域:默认情况下,cookie只能被创建该cookie的域里的页面访问到。可以通过设置domain来使其他的域能够访问该cookie。

安全性:是一个布尔值,指定了是否使用安全协议访问cookie。默认secure是false,即普通HTTP协议可访问。如果为true,那么只有通过安全协议(例如SSL)连接的页面才能够访问cookie。

可以建立一个辅助方法来简化创建cookie:

 1 function setCookie(name,value,expires,path) {
2 value = escape(value);
3 if(expires == "") {
4 var now = new Date();
5 now.setMonth(now.getMonth() + 6);
6 expires = now.toUTCString();
7 }
8 if(path != "") {
9 path = ";path=" + path;
10 }
11 document.cookie = name + "=" + value + ";expires=" + expires + path;
12 }

 

获取cookie的值:

使用document.cookie可获取cookie的值。它返回一个由各个cookie的"名=值"对所组成的字符串,各个名值对之间使用分号+空格(; )作为分隔符。

对于cookie的expires、path、domain和secure信息,无法返回。

如果想获取某一特定cookie的值,需要对document.cookie返回的字符串进行截取。可以建立一个辅助方法来获取指定名称的cookie的值:

 1 function getCookieValue(cookieName) {
2 var value = document.cookie;
3 var cookieStartAt = value.indexOf(" " + cookieName + "=");
4 if (cookieStartAt == -1) {
5 cookieStartAt = value.indexOf(cookieName + "=");
6 }
7 if (cookieStartAt == -1) {
8 value = null;
9 } else {
10 cookieStartAt = value.indexOf("=", cookieStartAt) + 1;
11 var cookieEndAt = value.indexOf(";", cookieStartAt);
12 if (cookieEndAt == -1) {
13 cookieEndAt = value.length;
14 }
15 value = unescape(value.substring(cookieStartAt, cookieEndAt));
16 }
17 return value;
18 }

 

浏览器中可以设置禁止使用cookie。在代码中,应该就cookie被禁用的情况作出必要的处理。

检查当前的浏览器是否禁用了cookie:先设置一个cookie,然后获取这个cookie。如果返回的是null,则说明禁用了cookie。

posted @ 2012-03-28 14:00  我愿为蛹  阅读(548)  评论(0编辑  收藏  举报