Document对象都有一个cookie属性,它使得JavaScript代码能够在用户的硬盘上持久地存储数据,
并且能够获取以这种方式存储的数据。客户端持久性是赋予WEB应用程序记忆力的一种简单方法。
cookie还可以用于客户端脚本化,并且是HTTP协议的一个标准扩展。
cookie的字符串由 名字/值 组成 (=区分),不同的属性之间用分号隔开。
cookie有4个可选属性
1、expires(已被max-age取代) 生存期
expires是未来的一个过期日期,max-age用秒来设置生命期
2、path 指定与此cookie关联在一起的网页
具有默认值,可通过设置path值,使其他来自同一个网络服务器的网页也可见(只要它的URL中
含有指定路径(path的值),就可以共享这个cookie(具有访问权限的页面可以使用docuemtn.cookie访问指定的cookie)
3、domain 用于多个web服务器共享cookie
如 domain=.example.com;path=/;
那么 catalog.example.com orders.example.com 以及其它所有位于example.com域的其他服务器上的网页
都能访问 这个cookie
注:不可设置为服务器所在的域之外的域
4、secure 布尔值
指定如何传输
true Https或其他的安全协议连接时才被传输
false Http就可传输
注:此4个都是cookie的属性,不是JavaScript对象的属性
navigator.cookieEnabled 可查看浏览器是否启用cookie
19.2 cookie的存储
注:cookie值不能含有分号、逗号或空白符
方式: name1=value1;name2=value2;max-age=seconds;path=path;domain=domain;secure;
document.getElementById("b1").onclick = function () {
document.cookie = "version=a;max-age=2000;";
var a = document.cookie;
}
用decodeURIComponent() 解码,以前用escape()和unescape()现基本已弃用。
通过max-age设置,也可以用expires(必须是Date.toGMTString() 格式规范)
max-age=60*60*24;
1、改变一个cookie的值
使用同一个path和domain以及新的值,再设置一次cookie的值(或更新生命期)
2、删除cookie的值
设置max-age值设置为0,或者设置为任意的值(或空的值)
cookie的局限性
浏览器总个数限制及每个cookie的大小控制,一般为300个及4KB的大小限制。
19.3 cookie的读取
只能读取name=value;这些字符串,不能对cookie4种属性进行读取。
不同的name=value且分号隔开,value有多个值,可以且冒号分开,再自定义方法解析。
注:cookie的惟一标识是 path+domain+name
19.5 cookie的替代方法
IE userData
Flash SharedObject
注:设置值时 "theme=blue; max-age=60; path=/; domain=test.com" 键值顺序不能乱放, max-age=60; path=/; domain=test.com 这几个必须在实际值后面,如果将其它值放在这中间或之后,会读取不到。
"theme=blue; max-age=60; path=/; domain=test.com" 可读取 theme=blue; max-age=60;
"max-age=60; theme=blue;path=/; domain=test.com" 可读取 max-age=60;