cookie的属性
expires 生存期
默认:会话期间存在(用户关闭浏览器后,cookie值被销毁)
其他:日期格式规范为GMT(或UCT)"Weekday, DD-Mon-YYYY HH:MM:SS GMT" 解决方法是使用Date对象。
path 可访问的路径
默认:创建该cookie值的网页路径(cookie只能被同在当前目录中的其他页面,或者当前目录的子目录中的页面访问)
其他:可以将path设置为“/”以使整个服务器域都可访问这个cookie成员
domain 可访问域
默认:当前域
其他:不同子域间将不能相互访问
secure 安全性(指定了在网络上传输cookie值的方式)
默认:false
其他:false - 普通的、不安全的http连接;true - https或其他安全协议
日期格式获取实例
var
nextyear
=
new
Date();
nextyear.setFullYear(nextyear.getFullYear()
+
1
);
expiretime
=
nextyear.toGMTString();
一个简单的封装实现
//
有关cookie的操作
function
Cookie() {};
//
设置cookie值
//
参数:cookie名,值,生存天数,生存小时数
Cookie.setCookie
=
function
(name, value, days, hours) {
//
如果没有传入生存期,则默认为0天2小时
days
=
days
||
0
;
hours
=
hours
||
2
;
var
expTime
=
new
Date();
expTime.setDate(expTime.getDate()
+
days);
expTime.setHours(expTime.getHours()
+
hours);
document.cookie
=
escape(name)
+
"
=
"
+
escape(value)
+
"
;
"
+
"
expires=
"
+
expTime.toGMTString();
};
//
获取某个cookie值
//
返回:cookie值或undefined
Cookie.getCookie
=
function
(name) {
var
rs
=
document.cookie.match(
new
RegExp(
"
(?:^| )
"
+
escape(name)
+
"
=([^;]*)(?:;|$)
"
,
"
i
"
)
);
return
rs
?
unescape(r[
1
]) : undefined;
};
//
删除某个cookie值
Cookie.deleteCookie
=
function
(name) {
document.cookie
=
escape(name)
+
"
=;expires=
"
+
new
Date().toGMTString();
};
//
清除全部cookie
Cookie.clearCookie
=
function
() {
//
获取过期时间字符串
var
expStr
=
new
Date().toGMTString();
//
获取当前可访问cookie中的所有name值
var
rs
=
document.cookie.match(
new
RegExp(
"
([^ ;][^;]*)(?=(=[^;]*)(;|$))
"
,
"
gi
"
)
);
//
删除所有cookie
for
(
var
i
in
rs)
document.cookie
=
rs[i]
+
"
=;expires=
"
+
expStr;
};
Cookie.setSubCookie
=
function
(name, subName, value) {
};
Cookie.getSubCookie
=
function
(name, subName) {
};
Cookie.setFullCookie
=
function
(name, value, expTime, path, domain, secure) {
};
其他笔记
cookie是一个单例对象。
cookie值不能含有分号、逗号或空白符,当有这些特殊字符出现时,可以用JavaScript提供的escape函数先对它进行编码(unescape解码)。
浏览器保存的cookie总数不能超过300个(注意cookie是单例),为每个Web服务器保存的cookie数不能超过20个(突破20:面包屑技术,通常使用冒号作为子cookie分割符),每个cookie保存的数据不能超过4KB(解决方法:另一种稍微强的脚本化数据存储机制-userData)