您的位置:首页 > Web前端

前端开发日记之cookie的学习

2016-10-19 09:45 351 查看
session是运行在服务器,而cookie运行在客服端。

本次的需求是,用户登录的时候可以选择不同的角色登录,我们需要记录用户上一次选择登录的角色,以便在用户下一次登录时自动地选择用户上一次的登录角色。

cookie的生命周期

设置Cookie对象的有效时间, setMaxAge()方法便可以设置Cookie对象的有效时间,

例如:Cookie c = new Cookie("username","john");

c.setMaxAge(60);//60秒的意思

c.setMaxAge(60*60);//一小时

c.setMaxAge(365*24*60*60);//一年

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。

这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。

如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie

cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。

贴上cookie操作的代码

//设置或添加cookie time为小时数
function setCookie(name,value,time){
var str = name + "=" + escape(value);
if(time > 0){
var date = new Date();
var ms = time*3600*1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString();
}
document.cookie = str;
}
//获取cookie
function getCookie(name){
//cookie中的数据都是以分号加空格区分开
var arr = document.cookie.split("; ");
for(var i=0; i<arr.length; i++){
if(arr[i].split("=")[0] == name){
return  escape(arr[i].split("=")[1]); //转码,预防中午乱码
}
}
//未找到对应的cookie则返回空字符串
return '';
}
//删除cookie
function removeCookie(name){
document.cookie = name+"=;expires="+(new Date(0)).toGMTString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息