cookie操作

转载自: 脚本之家
cookie是document对象的属性, 可以用js操作它. cookie是一个文件,对应一个域名. 同一个域名下的网页都可以使用同一个cookie.

缺点

cookie的缺点主要集中于安全性和隐私保护。主要包括以下几种:

  1. 浏览器能够禁用cookie功能;
  2. cookie是与浏览器相关的, 不能跨浏览器互相访问.
  3. cookie可能被安全软件或用户删除。
  4. cookie安全性不够高。所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。

操作

  • 设置cookie
    下面的都是单会话cookie,即浏览器关闭后这些cookie将会丢失,事实上这些cookie仅仅是存储在内存中,而没有建立相应的硬盘文件。
document.cookie="userId=28;name=liming"
//中文时需要url编码
document.cookie="str="+escape("I love ajax"); 
//解码
unescape();
document.cookie="name=liming";
document.cookie="age=17";
//他将会维护2个cookie

//重新赋值
document.cookie="name=xuwei"
  • 获取cookie
document.cookie="userId=828"; 
document.cookie="userName=hulk"; 
var strCookie=document.cookie; 
alert(strCookie); 

他会弹出所有的cookie值字符串,并不能获取指定的键值对

切割方法

//这样就得到了单个cookie的值。 
var strCookie=document.cookie; 
//将多cookie切割为多个名/值对 
var arrCookie=strCookie.split("; "); 
var userId; 
//遍历cookie数组,处理每个cookie对 
for(var i=0;i<arrCookie.length;i++){ 
    var arr=arrCookie[i].split("="); 
    //找到名称为userId的cookie,并返回它的值 
    if("userId"==arr[0]){ 
        userId=arr[1]; 
        break; 
    } 
} 
alert(userId); 
  • 给cookie设置终止日期
在实际开发中,cookie常常需要长期保存,例如保存用户登录的状态。这可以用下面的选项来实现: 

var date=new Date(); 
var expiresDays=10; 
date.setTime(date.getTime()+expiresDays*24*3600*1000); 
//将userId和userName两个cookie设置为10天后过期 
document.cookie="userId=828; userName=hulk; expires="+date.toGMTString(); 
  • 删除cookie
    为了删除一个cookie,可以将其过期时间设定为一个过去的时间
var date=new Date(); 
date.setTime(date.getTime()-10000); 
//将userId这个cookie删除 
document.cookie="userId=828; expires="+date.toGMTString(); 
  • 指定可访问cookie的路径
//当前cookie仅能在shop目录下使用
document.cookie="userId=320; path=/shop"; 

//如果要使cookie在整个网站下可用
document.cookie="userId=320; path=/"; 

封装的通用方法

添加一个cookie

该函数接收3个参数:cookie名称,cookie值,以及在多少小时后过期。这里约定expiresHours为0时不设定过期时间,即当浏览器关闭时cookie自动消失。该函数实现如下:

function addCookie(name,value,expiresHours){ 
    var cookieString=name+"="+escape(value); 
    //判断是否设置过期时间 
    if(expiresHours>0){ 
        var date=new Date(); 
        date.setTime(date.getTime+expiresHours*3600*1000); 
        cookieString=cookieString+"; expires="+date.toGMTString(); 
    } 
    document.cookie=cookieString; 
} 

获取指定名称的cookie值

该函数返回名称为name的cookie值,如果不存在则返回空,其实现如下:

function getCookie(name){ 
    var strCookie=document.cookie; 
    var arrCookie=strCookie.split("; "); 
    for(var i=0;i<arrCookie.length;i++){ 
        var arr=arrCookie[i].split("="); 
        if(arr[0]==name)return arr[1]; 
    } 
    return ""; 
} 

删除指定名称的cookie:deleteCookie(name)

该函数可以删除指定名称的cookie,其实现如下:

function deleteCookie(name){ 
    var date=new Date(); 
    date.setTime(date.getTime()-10000); 
    document.cookie=name+"=v; expires="+date.toGMTString(); 
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值