简介
- 在编程领域,Cookie 代表一种小型的文本文件,可以让开发人员在用户计算机上存储少量的数据(大约 4kb),来记录用户的某些信息。
- Cookie 由若干个键/值对组成(例如key1=value1;key2=value2),一个 Cookie 最大可以存储 4kb 的数据,超过长度的 Cookie 将被忽略。
- 不要在 Cookie 中存储账号、密码等敏感信息。
使用Cookie
获取Cookie
使用document.cookie,会返回一个字符串。
为了获取单个 Cookie 的值,我们可以通过 split() 函数将包含 Cookie 信息的字符串拆分为数组,然后再获取某个 Cookie 的值
getcookie: function (name) {
//获取name在Cookie中起止位置
var start = document.cookie.indexOf(name + "=");
if (start != -1) {
start = start + name.length + 1;
//获取value的终止位置
var end = document.cookie.indexOf(";", start);
if (end == -1)
end = document.cookie.length;
//截获cookie的value值,并返回
return unescape(document.cookie.substring(start, end));
}
return "";
}
设置Cookie
创建(设置)新的 Cookie 信息,需要以name=value形式的字符串来定义新的 Cookie 信息。
Cookie 数据中不能包含分号、逗号或空格。
- max-age 属性来指定 Cookie 可以存在的时间(单位为秒),默认为 -1,即关闭浏览器后失效
- path:设置cookie的作用域。例如网站的域名为 c.biancheng.net若 path 属性设置为/,则表示 Cookie 可在域名下的所有网页中使用。若 path 属性设置为/javascript/,则 Cookie 只可在 http://c.biancheng.net/javascript/ 下的网页中使用
- domain:设置子域名下可以使用。若将 domain 属性设置为.biancheng.net,则表示 Cookie 可在所有以biancheng.net结尾的域名下使用,注意,domain 属性值的第一个字符.不能省略。
- secure:表示 Cookie 将仅通过 HTTPS 协议传输
document.cookie = "url=http://c.biancheng.net/; path=/; domain=.biancheng.net; secure";
setcookie: function (name, value, expdays) {
if (expdays) {
var expdate = new Date();
//设置Cookie过期日期
expdate.setDate(expdate.getDate() + expdays);
//添加Cookie
document.cookie = name + "=" + escape(value) + ";expires=" + expdate.toUTCString() + ";path=/;";
} else {
document.cookie = name + "=" + escape(value) + ";path=/;";
}
}
修改或更新 Cookie
修改或更新 Cookie 值的唯一方法就是创建一个同名的 Cookie,来替换要修改的 Cookie
// 创建一个 Cookie
document.cookie = "url=http://c.biancheng.net/; path=/; max-age=" + 30*24*60*60;
// 修改这个 Cookie
document.cookie = "url=http://c.biancheng.net/javascript/; path=/; max-age=" + 365*24*60*60;
删除 Cookie
删除 Cookie 与修改 Cookie 类似,只需要重新将 Cookie 的值设置为空,并将 expires 属性设置为一个过去的日期即可
delcookie: function (name) {
my_commons.setcookie(name, "", -1);
}