第3个回答 推荐于2016-05-23
cookie(储存在用户本地终端上的数据)
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。
服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。:
:1:设置cookie
最简单的就是:document.cookie="user=aa"。
但是这样就没有过期时间了,只是暂存于电脑内存里没有保存下来,几天后无法显示cookie内容。下面开始正式写规范完整的函数。
代码如下:
function setCookie(name, value, iDay){
/* iDay 表示过期时间
cookie中 = 号表示添加,不是赋值 */
var oDate=new Date();
oDate.setDate(oDate.getDate()+iDay);
document.cookie=name+'='+value+';expires='+oDate;
}
JavaScript中Date对象的setDate方法用于设置一个月的某一天,而getDate获得当前的日期,由此可以按照保存为多少天就在当前(getDate)日期加多少天。
2:获取cookie
前面分析的时候我们讲过浏览器cookie是由像:user=aa; pwd=123;等等组成的,所有要想获取cookie关键还是字符串和数组的操作。
代码如下:
function getCookie(name){
/* 获取浏览器所有cookie将其拆分成数组 */
var arr=document.cookie.split('; ');
for(var i=0;i<arr.length;i++) {
/* 将cookie名称和值拆分进行判断 */
var arr2=arr[i].split('=');
if(arr2[0]==name){
return arr2[1];
}
}
return '';
}
3:删除cookie
删除cookie的思想很简单,就是将cookie的过期时间设置为过期(-1),已经过了一天。那么就能实现了,当然了需要调用设置cookie的函数setCookie。
代码如下:
function removeCookie(name){
/* -1 天后过期即删除 */
setCookie(name, 1, -1);
}
4:删除所有cookie
function clearCookie(){
var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
if (keys) {
for (var i = keys.length; i--;)
document.cookie=keys[i]+'=0;expires=' + new Date( 0).toUTCString()
}
}