美文网首页
cookie的常用操作

cookie的常用操作

作者: 风之帆 | 来源:发表于2017-06-11 09:11 被阅读176次

    JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。而cookie是运行在客户端的,所以可以用JS来设置cookie。

    假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?

    首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

    JS设置cookie

    假设在A页面中要保存变量username的值("yyf")到cookie中,key值为name,则相应的JS代码为:

    document.cookie = "name=" + yyf;
    

    假设需要加上过期时间,方法如下:

    function setCookie(name,value){
        var Days = 30;
        var exp = new Date();
        exp.setTime(exp.getTime() + Days*24*60*60*1000);//时间戳以毫秒为单位
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    }
    

    JS读取cookie

    假设cookie中存储的内容为:username=yyf;password=123

    则在B页面中获取变量username的值的JS代码如下:

    var username=document.cookie.split(";")[0].split("=")[1];
    //则该username获取结果为yyf
    
    注意:上述方法仅指明确cookie的数据数目和顺序的情况下才可使用,比如自己设置的或者通过浏览器查看后的页面。若是一个陌生页面,则应该通过如下万能法
    
    function getCookie(cName){
        var cookieArr = document.cookie.split(";");//将cookie通过分号分割,存为一个名为cookieArr的数组
        for (var i=0; i < cookieArr.length; i++){
            var cookieVal = cookieArr[i].split("=");//遍历数组,将每一个cookie的key和value通过等于号分割,存为一个名为cookieVal的数组
            if (cName == cookieVal[0])
            return unescape(cookieVal[1]);//将value值解密后拿出
        }
        return null;
    }
    

    删除cookies

    function delCookie(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);//将本地时间戳设置为不存在的一个时间即可
        var cval=getCookie(name);
        if(cval!=null)
        document.cookie= name + "="+cval+";expires="+exp.toGMTString();
    }
    

    jQuery-Cookie插件

    jQuery.cookie.js是个很好的cookie插件,包括设置、删除、获取等一系列完整的cookie操作

    • 创建会话cookie(Session cookie,既浏览器内存cookie,浏览器关闭后自动删除)
    $.cookie('the_cookie', 'the_value');
    
    • 创建一个生生存周期为7天的cookie
    $.cookie('the_cookie', 'the_value', { expires: 7 });
    
    • 创建一个有期限的cookie,整个站点可以读取
    $.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
    
    • 读取cookie
    $.cookie('the_cookie'); // => "the_value"
    $.cookie('not_existing'); // => undefined
    
    • 读取所有可用cookie
    $.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }
    
    • 删除cookie
    // 找到指定的cookie返回true,否则返回false
    $.removeCookie('the_cookie');
    // 删除指定过path的cookie
    $.removeCookie('the_cookie', { path: '/' });
    
    $.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});
    
    (1)读取cookie值
       $.cookie(cookieName)  cookieName:要读取的cookie名称。
         示例:$.cookie("username"); 读取保存在cookie中名为的username的值。
    (2)写入设置Cookie值:
       $.cookie(cookieName,cookieValue);  cookieName:要设置的cookie名称,cookieValue表示相对应的值。
       示例:$.cookie("username","admin"); 将值"admin"写入cookie名为username的cookie中。
          $.cookie("username",NULL);   销毁名称为username的cookie
    (3)[option]参数说明:
        expires:  有限日期,可以是一个整数或一个日期(单位:天)。  这个地方也要注意,如果不设置这个东西,浏览器关闭之后此cookie就失效了
        path:    cookie值保存的路径,默认与创建页路径一致。
          domin: cookie域名属性,默认与创建页域名一样。  这个地方要相当注意,跨域的概念,如果要主域名二级域名有效则要设置  ".xxx.com"
          secrue:   一个布尔值,表示传输cookie值时,是否需要一个安全协议。
    

    另外更多操作详情点击API文档

    相关文章

      网友评论

          本文标题:cookie的常用操作

          本文链接:https://www.haomeiwen.com/subject/dschqxtx.html