cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。
名字 cookie
当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 “Welcome John Doe!” 的欢迎词。而名字则是从 cookie 中取回的。
密码 cookie
当访问者首次访问页面时,他或她也许会填写他/她们的密码。密码也可被存储于 cookie 中。当他们再次访问网站时,密码就会从 cookie 中取回。
日期 cookie
当访问者首次访问你的网站时,当前的日期可存储于 cookie 中。当他们再次访问网站时,他们会收到类似这样的一条消息:“Your last visit was on Tuesday August 11, 2005!”。日期也是从 cookie 中取回的。
存储用户的数据
name=value;[expires=date];[path=path];[domain=somewhere.com];[secure]
【注】name和value必须有的(自定义的),后面带中括号的值是可选项。
【注】cookie一般情况下需要在服务器环境下加载。火狐支持本地加载。
设置cookie
document.cookie = ‘username=tianyufei’;
获取cookie
alert(document.cookie);
设置cookie的时候,有可能在cookie中存储中文。
【注】如果在cookie中有中文,一般情况下采取下述的处理方式。
1、编码去存储(中文 => 字符)
2、解码去读取(字符 => 中文)
encodeURIComponent 编码
decodeURIComponent 解码
expires
设置cookie过期日期,可以通过自定义的方式自定义过期日期。
【注】如果我们不去设置这个键,默认是当前会话结束时消失(只要将整个浏览器关闭)
细节:cookie过期的话,系统会自动清除过期的cookie。
删除cookie,我们可以将cookie过期日期,设置成,过去的某一时刻。
path
限制访问路径
如果我们不去设置path,默认是当前加载的.html文件路径
【注】如果设置的cookie路径和,加载文件的路径不一致的话,不能访问到cookie。
domain
限制访问域名
如果不去设置,默认,是当前加载文件的域名或者IP。
【注】设置cookie的域名和,加载文件的域名不一致的话,cookie设置失败。
secure
如果不设置,默认是false
可以允许任何网络传输协议加载 http https
【注】如果加了这个键,就必须用https协议来加载文件。
http https(证书认证的协议)
cookie存储大小的限制:
cookie总共存储大小的上限是 4KB左右
cookie每一域名下面,最多可以存储50条cookie。
删除cookie
1、removeCookie(name)
2、function removeCookie(name){
document.cookie = encodeURIComponent(name) + “=;expires=” + new Date(0);
} //将过期时间设置成之前的时间,那么cookie将为空。
将cookie封装
function setCookie(name, value, expires, path, domain, secure){
var cookieStr = encodeURIComponent(name) + “=” + encodeURIComponent(value);
if(expires){
cookieStr += “;expires=” + numOfDate(expires);
}
if(path){
cookieStr += “;path=” + path;
}
if(domain){
cookieStr += “;domain=” + domain;
}
if(secure){
cookieStr += “;secure”;
}
document.cookie = cookieStr;
}
function numOfDate(n){
//传入一个n
var d = new Date();
var date = d.getDate();
d.setDate(n + date);
return d;
}
将cookie中name后的value值单独输出
function getCookie(name){
var cookieStr = decodeURIComponent(document.cookie);
//1、健在字符串中出现的位置
var start = cookieStr.indexOf(name);
if(start == -1){
return null;
}else{
//2、找到结束位置
var end = cookieStr.indexOf(";", start);
if(end == -1){
end = cookieStr.length;
}
}
//3、提取字符串
var subStr = cookieStr.substring(start, end);
//4、字符串分割
var arr = subStr.split("=");
return arr[1];
}