JavaScript 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)