介绍:
Cookie是记录访问某站点的用户的信息,它其实驻留在用户的硬盘上,即使用户已经离开某站点,cookie在用户的硬盘上仍然存在,如果该用户再次返回那个站点,则该cookie就会被一起发回到该站点的服务器中,便于站点的管理者统计和处理重复到访者的信息。
(注意:Cookies被引入Netscape 2.0和MSIE 3.0,但是MSIE 3.0对cookies的应用不是太完善。可以利用cookies在别的用户的计算机上保存和读取信息,但却不能将cookie保存在自己的计算机上,所以给cookie的测试造成一定的困难。所以如果使用的是MSIE 3.0,最好将其升级为MSIE 4.0或者改用Netscape,好像大家现在都使用MSIE 6.0以上,所以也没有什么可顾虑的。)
深入:
由于cookies牵扯到向用户的硬盘写盘和读取信息,所以就涉及一个保密性的问题。如果需要大量使用cookies,应该阅读一下Marc Slayton写的cooikies揭密以及重新考察cookies。这些文章将告诉cookie的实质和作用范围以及其内在的局限性。其最重要的局限性在于:不是每个人的浏览器都欢迎cookies。即便是用户的浏览器欢迎cookies,但用户也有可能拒绝cookies的访问(大部分人还是欢迎的),每个域名只分配20个cookies,所以要节省着使用它们。Cookies不得大于4KB,当然4,000字节的容量是足够的了。
设置一个基本的cookie很容易.你所需做的只是在一个cookie_name=value表单中生成一个字符串,然后设置document.cookie属性.唯一的技巧:cookie值中不能有空格,逗号或分号.好在你无需担心这些问题,因为有一系列的函数可以帮你对cookies属性编码和解码:escape()和unescape()。
例:var the_cookie = escape(the_name);
document.cookie =the_cookie;
escape()将the_name内的空格用%20做替换,unescape()将其反替换为空格。
读取:
使用document.cookie读取与网页有关的cookie。
例:
var cookieUserInfo = "userinfo=name:zhoulei/age:25/sex:man";
document.cookie = cookieUserInfo;
斜杠/和冒号是不是绝对的选择,可以使用任何的字符做分割的标志,只要注意在对cookie解码时也使用同样的限位器即可。
1.一个cookie的读取,包含若干信息
网页A |
网页B setCookieArray(document.cookie) function setCookieArray(cookieValue){ var cookieArray = new Array(); if (cookieValue == '' || cookieValue == null){ return null; } var separated_values = cookieValue.split("/"); for (var loop=0; loop < separated_values.length; loop++){ var broken_info = separated_values[loop].split(":"); var the_property = broken_info[0]; var the_value = broken_info[1]; cookieArray[the_property] = the_value; } return cookieArray; } |
2.多个cookie的读取,包含若干信息
网页A |
网页B setCookieArray(getCookieValue("userinfo"));
// 读取页面Cookie内指定的单个Cookie值 var retValue; if (document.cookie == '') { return null; } var firstChar, laseChar; var cookieTemp = document.cookie; firstChar = cookieTemp.indexOf(name); if (firstChar != -1){ firstChar += name.length + 1; laseChar = cookieTemp.indexOf(";", firstChar); if (laseChar == -1){ laseChar = cookieTemp.length; } retValue = cookieTemp.substring(firstChar, laseChar); return retValue; } else { return null; } } var cookieArray = new Array(); if (cookieValue == '' || cookieValue == null){ return null; } var separated_values = cookieValue.split("/"); for (var loop=0; loop < separated_values.length; loop++){ var broken_info = separated_values[loop].split(":"); var the_property = broken_info[0]; var the_value = broken_info[1]; cookieArray[the_property] = the_value; } return cookieArray; }
|
时效:
Cookie常常在用户关闭其浏览器时会被自动删除,如果希望设置Cookie的失效时间,需要一种叫做GMT的特殊格式。
例:
Mon, 27-Apr-1998 00:00:00 GMT
Javascript有一个日期的方法叫做toGMTString可以轻松设置GMT。
例:var the_date = new Date("December 31, 2023");
var the_cookie_date =the_date.toGMTString();
一旦设置了cookie的失效期,其cookie的信息设置应为:
document.cookie = "userinfo=name:zhoulei/age:25/sex:man;expires=the_cookie_date";
路径和域
"path=/;domain=sina.com.cn;"