转载自:
cookie属性
maxAge:设置cookie的有效期
- 大于0:表示将当前cookie保存在硬盘上,保存时间由其参数决定
- 小于0:无论该方法的参数是多少,只要小于0,则表示将当前cookie保存在浏览器内存中,浏览器关闭的同时cookie删除;
- 等于0:表示浏览器将当前cookie及之前保存的同名cookie删除
Expires
定义了一个指定的日期和时间,到了这个日期或时间时,浏览器应该删掉cookie。日期和时间的指定格式是Wdy, DD Mon YYYY HH:MM:SS GMT或者Wdy, DD Mon YY HH:MM:SS GMT,其中YY的值大于等于0小于等于69。
- 例子 下面就是一个当用户登录之后从站点接收到的三个Set-Cookie头的例子:
HTTP/1.0 200 OK
Set-Cookie: lu=Rg3vHJZnehYLjVg7qi3bZjzg; Expires=Tue, 15 Jan 2013 21:47:38 GMT; Path=/; Domain=.example.com; HttpOnly
Set-Cookie: made_write_conn=1295214458; Path=/; Domain=.example.com
Set-Cookie: reg_fb_gate=deleted; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.example.com; HttpOnly
第一个cookie,lu被设置在2013年1月15日过期。它会被浏览器一直用到那个设置的时间。第二个cookie,made_write_com没有设置有效期,所以它是个session cookie,当用户关闭浏览器时,会删除这个cookie。第三个cookie,reg_fb_gate值被改成了"deleted",并且有一个过去的有效期。浏览器会删除这个cookie,因为它的有效期已经过去了。注意只有'Set-Cookie'中的domain和path属性匹配cookie被创建时的值时,才能被删除
Domain和Path属性定义了cookie的范围
- Path: 该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
- domain: 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
本质上是告诉浏览器cookie属于哪个站点。为了明显的安全原因,cookie只能在当前资源的顶级域名或者子级域名上设置,不能再其他域名和对应的子级域名上设置。例如,example.org站点不能设置一个domain是foo.com的cookie,因为不会允许example.org站点去控制foo.com的cookie。
Secure和HttpOnly
- secure: 该Cookie是否仅被使用安全协议传输。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
- HttpOnly属性指示浏览器除了HTTP/HTTPS请求之外不要显示cookie。这意味着这种cookie不能在客户端通过脚本获取,因此也不会轻易的被跨站脚本窃取
设置过期时间
//写入cookie到主域,设置过期时间为一年
function SetCookie(name, value) {
console.log(name, value)
var str = name + "=" + escape(value) + ";domain=.cnblogs.com;path=/";
var date = new Date();
//设置date为当前时间加一年
date.setTime(date.getTime() + 365 * 24 * 60 * 60 * 1000);
//expires添加时间
str += ";expires=" + date.toUTCString();
console.log(str)
document.cookie = str;
}
获取cookie的值
function cookie(name){
var cookieArray=document.cookie.split("; ");
var cookie=new Object();
for (var i=0;i<cookieArray.length;i++){
var arr=cookieArray[i].split("=");
if(arr[0]==name)return arr[1];
}
return "";
}
删除cookie
//删除cookie
function delCookie(name){
document.cookie = name+"=;expires="+(new Date(0)).toUTCString();
}