关于cookie

  1. cookie是啥?
    cookie是浏览器的一种机制,它将document的cookie属性提供给javaScript,可以由javaScript来进行来控制, 但并不是javaScript的性质。cookie是存于用户硬盘的一个文件,这个文件对应一个域名。每次浏览器访问这个域名的时候都会使用这个文件,因此cookie是不可以跨域的,且cookie,则可以达到真正全局变量的要求。
  2. cookie的应用场合
    (1) 保存用户的登录状态。比如将用户id存储在cookie中,当该用户再次访问该页面的时候,就不需要重新登录。而且还可以设置cookie的过期时间
    (2) 跟踪用户的行为。比如,一个天气的预报网站,可以将每次的定位存储起来,然后下次访问网站的时候,就可以自动切换城市。不需要频繁的切换。
    以上是列举的几个应用场合,还有许多地方可用。
  3. cookie的缺点(其缺点主要集中于安全性和隐私保护)
    (1) cookie可能被用户禁用
    (2) cookie可能被用户删除
    (3) cookie是与浏览器相关的,浏览器之间的cookie是不可以互相访问的
    (4) cookie的安全性不高,它是以一个文件的形式存在。因此,在使用cookie保存用户密码的时候需要进行加密保存
  4. cookie的使用
    (1) 每一个cookie都是一个键值对(名/值)(key/value),使用的时候可以对document.cookie直接赋值
document.cookie = "userId=828;userNmae=jack";

cookie中的名或者值都不可以包含( ‘=’ 等号, ‘;’冒号 ,‘,’逗号以及空格等),如果不确定他是否包含以上字符,使用 escape()函数进行编码,它保存时一些特殊的字符是使用十六进制。

document.cookie = "str=" + escape('I LOVE YOU');

取值时,再将值使用unescape()函数还原
(2) 直接使用document.cookie赋值,并不会覆盖原来的值。相当于在原来的基础上添加一个cookie值
(3) 获取cookie值时,不能指定一个名回去值。需要通过获取全部,再进行遍历

//设置两个cookie
document.cookie="userId=828";
document.cookie="userName=jack"; 
//获取全部
var userId = '',
    cookieArr = document.cookie.split(';');
//遍历cookie数组
for(var i = 0 , len = cookieArr.length ; i < len ; i++){
    var arr= cookieArr[i].split('=');
    if('userId' == arr[0]){
        userId = arr[1];
    }
}

(4) 设置cookie过期时间
迄今为止,所有的cookie都是单会话,浏览器关闭之后就会丢失,而且cookie也不是存储在硬盘中,而是在内存中

document.cookie="userName=jack;expiress=GMT_string";
其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将userId这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将消失,不可访问。

(5) 删除一个cookie,可以将其时间设置成过去的时间

//为了控制cookie可以访问的目录,需要使用path参数设置cookie,语法如下:

document.cookie="name=value; path=cookieDir";
//其中cookieDir表示可访问cookie的目录。例如:
document.cookie="userId=320; path=/shop";
//就表示当前cookie仅能在shop目录下使用。 

(6) 指定可访问cookie的主机名
和路径类似,主机名是指同一个域下的不同主机,例如:www.google.com和gmail.google.com就是两个不同的主机名。默认情况下,一个主机中创建的cookie在另一个主机下是不能被访问的,但可以通过domain参数来实现对其的控制,其语法格式为:

document.cookie="name=value; domain=cookieDomain";

//以google为例,要实现跨主机访问,可以写为:
document.cookie="name=value;domain=.google.com";
//这样,所有google.com下的主机都可以访问该cookie。

5.操作cookie的常用的几个自定义函数
(1)添加:addCookie(name , value , expiresHours) 如果不设置过期时间,则表示关闭浏览器之后,丢失。

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;
} 

(2) 获取特定的cookie值:getCookie(cookieName)

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 "";
} 

(3) 通过cookie的名去删除: deleteCookie(cookieName)

function deleteCookie(name){
    var date=new Date();
    date.setTime(date.getTime()-10000);
    document.cookie=name+"=v; expires="+date.toGMTString();
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值