一、cookie的构成:cookie由浏览器保存的以下几块信息构成。
名称:一个唯一确定cookie的名称。cookie的名称必须是经过URL编码的。
值:储存在cookie中的字符串值。值必须被URL编码
域:cookie对于哪个域是有效的。
路径:对于指定域中的那个路径,应该向服务器发送cookie。
失效时间:表示cookie何时应该被删除的时间戳。
安全标志:指定后,cookie只有在使用SSL连接的时候才发送到服务器。
其中,域、路径、失效时间和secure标志都是服务器给浏览器的指示,以指定何时应该发送cookie。这些参数并不会做为发送到服务器的cookie信息的一部分,只有名值对儿才会被发送。
二、由于JavaScript中读写cookie不是非常直观,因此可以封装一个CookieUtil对象简化cookie的功能。如下:
var CookieUtil = {
get: function(name) {
var cookieName = encodeURIComponent(name) + '=',
cookieStart = document.cookie.indexOf(cookieName),
cookieValue = null;
if (cookieStart > -1) {
var cookieEnd = document.cookie.indexOf(';',cookieStart);
if (cookieEnd === -1) {
cookieEnd = document.cookie.length;
}
cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
}
return cookieValue;
},
set: function (name, value, expires, path, domain, secure) {
var cookieText = encodeURIComponent(name) + '=' +
encodeURIComponent(value);
if (expires instanceof Date) {
cookieText += '; expires=' + expires.toGMTString();
}
if (path) {
cookieText += '; path=' + path;
}
if (domain) {
cookieText += '; domain=' + domain;
}
if (secure) {
cookieText += '; secure';
}
document.cookie = cookieText;
console.log(document.cookie);
},
unset: function (name, path, domain, secure) {
this.set(name, " ", new Date(0), path, domain, secure);
}
}
CookieUtil.set('name', 'lizuncong');
CookieUtil.set('mycookie','ismycookie');
document.write( CookieUtil.get('name') );
document.write( CookieUtil.get('mycookie'));
没有删除已有cookie的直接方法。所以,需要使用相同的路径、域和安全选项再次设置cookie,并将失效时间设置为过去的时间。