zoukankan      html  css  js  c++  java
  • cookie

    cookie的用途:用于在客户端存储会话消息
    相关API:doument.cookie;
    创建cookie:document.cookie = newCookie;
    newCookie是一个键值对形成的字符串,由以下几部分组成:
    • 名称(name=value):一个唯一确定的cookie名称
    • 域(;domain=domain) :对于哪个域是有效的,如果没有定义,默认为当前文档位置的路径的域名部分
    • 有效时间( expires=date-in-GMTString-format) 如果没有定义,cookie会在对话结束时过期 或( ;max-age=max-age-in-seconds )
    • 路径(;path=path)默认为当前文档位置的路径
    • 安全标志(;secure)设置以后,cookie只能通过https协议传输
    获取cookie:alert(document.cookie);
    cookie的值字符串可以用encodeURIComponent()来保证它不包含任何逗号、分号或空格
     以下是一个支持cookie读写的工具库源码
    /*
    |*|
    |*|  :: cookies.js ::
    |*|
    |*|  A complete cookies reader/writer framework with full unicode support.
    |*|
    |*|  https://developer.mozilla.org/en-US/docs/DOM/document.cookie
    |*|
    |*|  This framework is released under the GNU Public License, version 3 or later.
    |*|  http://www.gnu.org/licenses/gpl-3.0-standalone.html
    |*|
    |*|  Syntaxes:
    |*|
    |*|  * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
    |*|  * docCookies.getItem(name)
    |*|  * docCookies.removeItem(name[, path], domain)
    |*|  * docCookies.hasItem(name)
    |*|  * docCookies.keys()
    |*|
    */
    
    var docCookies = {
        getItem: function (sKey) {
            return decodeURIComponent(document.cookie.replace(
                new RegExp("(?:(?:^|.*;)\s*" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\$&") + "\s*\=\s*([^;]*).*$)|^.*$"), "$1"))
                || null;
        },
        setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
            if (!sKey || /^(?:expires|max-age|path|domain|secure)$/i.test(sKey)) {
                return false;
            }
            var sExpires = "";
            if (vEnd) {
                switch (vEnd.constructor) {
                    case Number:
                        sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
                        break;
                    case String:
                        sExpires = "; expires=" + vEnd;
                        break;
                    case Date:
                        sExpires = "; expires=" + vEnd.toUTCString();
                        break;
                }
            }
            document.cookie = encodeURIComponent(sKey) +
                "=" + encodeURIComponent(sValue) +
                sExpires +
                (sDomain ? "; domain=" + sDomain : "") +
                (sPath ? "; path=" + sPath : "") +
                (bSecure ? "; secure" : "");
            return true;
        },
        removeItem: function (sKey, sPath, sDomain) {
            if (!sKey || !this.hasItem(sKey)) {
                return false;
            }
            document.cookie = encodeURIComponent(sKey) +
                "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" +
                ( sDomain ? "; domain=" + sDomain : "") +
                ( sPath ? "; path=" + sPath : "");
            return true;
        },
        hasItem: function (sKey) {
            return (new RegExp("(?:^|;\s*)" + encodeURIComponent(sKey).replace(/[-.+*]/g, "\$&") + "\s*\=")).test(document.cookie);
        },
        /* optional method: you can safely remove it! */
        keys: function () {
            var aKeys = document.cookie.replace(/((?:^|s*;)[^=]+)(?=;|$)|^s*|s*(?:=[^;]*)?(?:1|$)/g, "").split(/s*(?:=[^;]*)?;s*/);
            for (var nIdx = 0; nIdx < aKeys.length; nIdx++) {
                aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
            }
            return aKeys;
        }
    };
    

      

  • 相关阅读:
    CALayer3层的属性
    CALayer1简介
    网络处理2异步POST请求和同步请求
    网络处理1异步GET请求
    【ObjectiveC】05第一个OC的类
    CALayer4自定义层
    .Net网站不能预编译以及不能请求的调试过程
    (源码)WinForm TextBox 实现自动索引功能
    分享一个WinForm里面自定义的MessageBox
    C#操作十六进制数据以及十进制与十六进制互相转换
  • 原文地址:https://www.cnblogs.com/jingmi-coding/p/9383432.html
Copyright © 2011-2022 走看看