美文网首页
【小白专场】cookie设置那点事

【小白专场】cookie设置那点事

作者: 玉面小猿 | 来源:发表于2018-06-17 23:01 被阅读0次

    不知道大家有没有看菜鸟教程上关于cookie设置及使用的案例呢?下面来一篇详细介绍,一起来看~

    function setCookie(cookieName,cookieValue,expireTime){
         var exdate = new Date();
         exdate.setDate(exdate.getDate()+expireTime); //设置cookie过期时间
        document.cookie=cookieName+ "=" +encodeURI(cookieValue)+
            ((expireTime==null) ? "" : "; Expires="+exdate.toGMTString())
         }
         /*写入cookie各个字段的值,对传入的值进行编码,以';'进行分割 ,并设 
        置过期时间  不传默认永不过期
         * 将传入的时间对象与过期时间相加,并转成字符串传给Expires(此处小写也可以)/
    
    需要注意的知识点

    通过setCookie() 来创建并写入数据,这里注意:
    创建cookie时必须开启服务,直接在浏览器打开本地文件会导致失败。
    可以使用webpack的http-serve来开启服务,或者使用webstorm自带的server来访问,也是极方便的~

    cookie参数中的 Expires/Max-Age 区别需要知道

    Expires Max-Age
    HTTP/1.0 HTTP/1.0
    绝对时间 相对时间
    最后访问时间(Atime)/修改时间(MTime) 文档的请求时间(Atime)

    例如:用户请求时间是10:00,max-age设置的是600的话,相当10:00+600秒过期,也就是相对10:00的时间后面600秒后过期.默认的max-age是由Expires算出来的;
    Expires是HTTP/1.0中的,它比max-age要麻烦点.Expires指定的时间分下面二种,这个主要考虑到设置是A还是M.

    1.相对文件的最后访问时间(Atime)

    当Apache使用A时间来做Expires时.这样设置时.他就和max-age的值相等,因为max-age是相对文件的请求时间(Atime).

    2.绝对修改时间(MTime)

    假设文件的建立时间为12:00.
    当用户Request请求为12:00时,过期为600秒
    Expires=12:00+600=12:10
    max-age=12:00+600=12:10
    得出:Expires等于max-age
    当用户Request请求为18:20时,过期为600秒
    Expires=18:00+600=18:10(因为设置成Mtime时,时间由文件建立时间来决定)
    max-age=18:20+600=18:30
    得出:Expires不等于max-age


    查看设置的cookie
    function getCookie(cookieName){
    //获取cookie
        if(document.cookie.length > 0){
            var cookie_start = document.cookie.indexOf(cookieName + '=');
            /*
            *   返回cookie找到cookieName值的下标
            *   查找名为cookieName的cookie值的时候
            *   查找"cookieName="的位置;如果不要等于号,就会找到其它位置的"user"*/
            if(cookie_start != -1){
                cookie_start = cookie_start +cookieName.length + 1;
                var cookie_end   = document.cookie.indexOf(';',cookie_start);
                if(cookie_end == -1) cookie_end = document.cookie.length;
                return decodeURI(document.cookie.substring(cookie_start,cookie_end))
            }
        }
    return "";
    }
    
    function checkCookie(){
        //检查cookie是否存在,不存在开始存入数据,存在直接取出
        username =getCookie('username');
        if(username != null && username !=""){
            alert('Welcome again,'+username +'!')
        }
        else {
            username =prompt('Please enter your name,sweetheart',"");
            if(username != null || username != "" ){
                setCookie('username',username,365);
            }
        }
     }
    

    相关文章

      网友评论

          本文标题:【小白专场】cookie设置那点事

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