1.什么是cookie
cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。--w3school
cookie是Web浏览器存储的少量数据,在浏览器和服务器之间传输,可以通过客户端脚本(javascript)和服务器端语言(如php)实现cookie的存取。
2.javascript操作cookie
document.cookie='username=rose';
由于cookie的名/值中的值不允许包含分号,逗号和空白符,因此,在存储前一般采用编码函数对值进行编码,在读取时需采用对应的函数解码
document.cookie="username="+encodeURIComponent(value);
function getcookie(){
var cookie={};//初始化最后要返回的对象
var all=document.cookie;//获取所有的cookie值
if(all==="")
return cookie;//检查cookie是否为空
//使用split分离名值对
var list=all.split(";");
//遍历每个cookie
for(var i=0;i<list.length;i++){
var cookie=list[i];
//查找第一个“=”
var p=cookie.indexOf("=");
//获取cookie名字
var name=cookie.substring(0,p);
//获取对应的值
var value=cookie.substring(p+1);
//对值解码
value=decodeURTComponent(value);
//将名值对存储到对象中
cookie[name]=value;
}
return cookie;
}
3.cookie属性
document.cookie="name=rose;max-age=date";
完整代码为:
function setCookie(c_name, value, expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
使用方法:setCookie('username','rose',30)
2.作用域:
在 "http://www.cnblogs.com/kikyo_code/" 这个页面创建一个cookie,那么在"/kikyo_code/"这个路径下的页面如: "http://www.cnblogs.com/kikyo_code/archive/2016/3/07/Cookie.html"这个页面默认就能取到cookie信息。
可在默认情况下, "http://www.cnblogs.com"或者 "http://www.cnblogs.com/xxxx/" 就不可以访问这个 cookie。
如果把路径设置成"/",那么该cookie对任何http://www.cnblogs.com这台服务器上的页面都是可见的。
document.cookie = "name=rose;path=/"
(2)域:
例如 "order.example.com" 与 "catalog.example.com" 公用一个关联的域名"example.com",我们如果想让 "order.example.com" 下的cookie被 "catalog.example.com" 访问,我们就需要用到 cookie 的domain属性,并且需要把path属性设置为 "/"。
document.cookie = "username=rose;path=/;domain=example.com"
注意:cookie的域只能设置为当前服务器的域。
3.安全
cookie还有一个属性是secure,它是一个布尔类型属性,用来表示cookie的值以哪种方式来传递。cookie默认的是以不安全的形式(HTTP)传递的,可以通过设置secure来规定cookie以HTTPS或者其它安全协议传递。
document.cookie = "username=rose;secure"
4.清除cookie
5.cookie的利与弊