欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)據(jù)存儲(chǔ) Cookie篇

 更新時(shí)間:2016年07月02日 10:50:33   作者:光明大神棍  
這篇文章主要為大家介紹了JavaScript數(shù)據(jù)存儲(chǔ) Cookie篇,感興趣的朋友可以參考一下

1.什么是cookie?
    答:cookie是用于在客戶端存儲(chǔ)會(huì)話信息的。
2.cookie的組成部分?
    ①名稱:一個(gè)唯一確定cookie 的名稱。建議區(qū)分大小寫。cookie 的名稱必須是經(jīng)過URL 編碼的。
    ②值:儲(chǔ)存在cookie 中的字符串值。值必須被URL 編碼。
    ③域:cookie 對(duì)于哪個(gè)域是有效的。所有向該域發(fā)送的請(qǐng)求中都會(huì)包含這個(gè)cookie 信息。這個(gè)值可以包含子域(subdomain,如www.wrox.com),也可以不包含它(如.wrox.com,則對(duì)于wrox.com的所有子域都有效)。如果沒有明確設(shè)定,那么這個(gè)域會(huì)被認(rèn)作來自設(shè)置cookie 的那個(gè)域。
    ④路徑:對(duì)于指定域中的那個(gè)路徑,應(yīng)該向服務(wù)器發(fā)送cookie。例如,你可以指定cookie 只有從http://www.wrox.com/books/ 中才能訪問,那么http://www.wrox.com 的頁面就不會(huì)發(fā)送cookie 信息,即使請(qǐng)求都是來自同一個(gè)域的。
    ⑤失效時(shí)間:表示cookie 何時(shí)應(yīng)該被刪除的時(shí)間戳。默認(rèn)情況下,瀏覽器會(huì)話結(jié)束時(shí)即將所有cookie 刪除;不過也可以自己設(shè)置刪除時(shí)間。這個(gè)值是個(gè)GMT 格式的日期(Wdy, DD-Mon-YYYY HH:MM:SS GMT),用于指定應(yīng)該刪除cookie 的準(zhǔn)確時(shí)間。因此,cookie
    可在瀏覽器關(guān)閉后依然保存在用戶的機(jī)器上。如果你設(shè)置的失效日期是個(gè)以前的時(shí)間,則cookie 會(huì)被立刻刪除。
    ⑥安全標(biāo)志:指定后,cookie 只有在使用SSL 連接的時(shí)候才發(fā)送到服務(wù)器。例如,cookie 信息只能發(fā)送給https://www.wrox.com,而http://www.wrox.com 的請(qǐng)求則不能發(fā)送cookie。
3.列舉一個(gè)cookie的例子?
    以下是一個(gè)完整的cookie的例子,我們將把它分解開來:
    Set-Cookie: name=value; expires=Mon, 22-Jan-07 07:10:24 GMT; domain=.wrox.com; path=/; secure
    ①名稱: name字符串表示
    ②值:value字符串表示
    ③過期時(shí)間:Mon, 22-Jan-07 07:10:24 GMT
    ④域名:.wrox.com
    ⑤路徑:當(dāng)前目錄/
    ⑥安全標(biāo)志:secure
4.如何操作cookie?
 

  var CookieUtil = {
    // 設(shè)置cookie
    set : function (name, value, expires, domain, path, secure) {
      var cookieText = "";
      cookieText += encodeURIComponent(name) + "=" + encodeURIComponent(value);
      if (expires instanceof Date) {
        cookieText += "; expires=" + expires.toGMTString();
      }
      if (path) {
        cookieText += "; path=" + path;
      }
      if (domain) {
        cookieText += "; domain=" + domain;
      }
      if (secure) {
        cookieText += "; secure";
      }
      document.cookie = cookieText;
    },
    // name=value; expires=expiration_time; path=domain_path; domain=domain_name; secure
    // 獲取cookie
    get : function (name) {
      var cookieName = encodeURIComponent(name) + "=",
        cookieStart = document.cookie.indexOf(cookieName),
        cookieValue = "";
      if (cookieStart > -1) {
        var cookieEnd = document.cookie.indexOf (";", cookieStart);
        if (cookieEnd == -1) {
          cookieEnd = document.cookie.length;
        }
        cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
      }
      return cookieValue; 
    },
    // 刪除cookie
    unset : function (name, domain, path, secure) {
      this.set(name, "", Date(0), domain, path, secure);
    }
  };
  // 測(cè)試
  CookieUtil.set("name", "zhang");
  var name = CookieUtil.get("name");
  alert(name);  // zhang
  CookieUtil.unset("name");
  alert(CookieUtil.get("name")); // 空

5.cookie的限制
    ①存儲(chǔ)數(shù)據(jù)數(shù)量有限
    ②保了儲(chǔ)存在cookie 中的信息只能讓批準(zhǔn)的接受者訪問,而無法被其他域訪問
    ③安全性有限
6.針對(duì)cookie數(shù)據(jù)存儲(chǔ)少量的問題,我們提出了子cookie的概念。即在每條cookie的值中存儲(chǔ)多條數(shù)據(jù),用"&"隔開。

  var SubCookieUtil = {
    /** 設(shè)置一條完整的cookie
    *  param name : 表示cookie的名稱,必填
    *  param subCookies : 表示cookie的值,為一個(gè)對(duì)象,必填
    *  param expires : 表示cookie的過期時(shí)間,可以不填
    *  param domain : 表示cookie的域名,可以不填
    *  param path : 表示cookie的路徑,可以不填
    *  param secure : 表示cookie的安全標(biāo)志,可以不填
    *  eg : SubCookieUtil.setAll("info", { name : "zhang", age : 23});
    **/
    setAll : function (name, subCookies, expires, domain, path, secure) {
      var cookieText = "", subName, cookieParts = [];
      cookieText += encodeURIComponent(name) + "=";
      for(subName in subCookies) {
        cookieParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subCookies[subName]));
      }
      if (cookieParts.length > 0) {
        cookieText += cookieParts.join("&");
        if (expires instanceof Date) {
          cookieText += "; expires=" + expires.toGMTString();
        }
        if (path) {
          cookieText += "; path=" + path;
        }
        if (domain) {
          cookieText += "; domain=" + domain;
        }
        if (secure) {
          cookieText += "; secure";
        }
      } else {
        cookieText += "; expires=" + Date(0).toGMTString();
      }
      document.cookie = cookieText;
    },
    /** 設(shè)置一條子cookie
    *  param name : 表示cookie的名稱,必填
    *  param subName : 表示子cookie的名稱,必填
    *  param value : 表示子cookie的值,必填
    *  param expires : 表示cookie的過期時(shí)間,可以不填
    *  param domain : 表示cookie的域名,可以不填
    *  param path : 表示cookie的路徑,可以不填
    *  param secure : 表示cookie的安全標(biāo)志,可以不填
    *  eg : SubCookieUtil.set("info", "sex", "boy");
    **/
    set : function (name, subName, value, expires, domain, path, secure) {
      var cookies = this.getAll(name) || {};
      cookies[subName] = value;
      this.setAll(name, cookies, expires, domain, path, secure);
    },
    /** 讀取一條完整cookie
    *  param name : 表示cookie的名稱,必填
    *  return : 一個(gè)cookie對(duì)象
    *  eg : SubCookieUtil.getAll("info");
    **/
    getAll : function (name) {
      var cookieName = encodeURIComponent(name) + "=",
        cookieStart = document.cookie.indexOf(cookieName),
        cookieValue = "", i, len, subCookies, parts, result = {};
      if (cookieStart > -1) {
        var cookieEnd = document.cookie.indexOf (";", cookieStart);
        if (cookieEnd == -1) {
          cookieEnd = document.cookie.length;
        }
        cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
        if (cookieValue.length > 0) {
          subCookies = cookieValue.split("&");
          for (i = 0, len = subCookies.length; i < len; i++) {
            parts = subCookies[i].split("=");
            result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
          }
          return result;
        }
      }
      return null;
    },
    /** 獲取一條子cookie的值
    *  param name : 表示cookie的名稱,必填
    *  param subName : 表示子cookie的名稱
    *  return : 一個(gè)子cookie的值
    *  eg : SubCookieUtil.get("info", "name");
    **/
    get : function (name, subName) {
      var cookies = this.getAll(name);
      if (cookies) {
        return cookies[subName];
      } else {
        return null;
      }
    }, 
    /** 刪除一條完整cookie
    *  param name : 表示cookie的名稱,必填
    *  param domain : 表示cookie的域名,可以不填
    *  param path : 表示cookie的路徑,可以不填
    *  param secure : 表示cookie的安全標(biāo)志,可以不填
    *  eg : SubCookieUtil.unsetAll("info");
    **/
    unsetAll : function (name, domain, path, secure) {
      this.setAll(name, "", Date(0).toGMTString(), domain, path, secure);
    },
    /** 刪除一條子cookie
    *  param name : 表示cookie的名稱,必填
    *  param subName : 表示子cookie的名稱,必填
    *  param domain : 表示cookie的域名,可以不填
    *  param path : 表示cookie的路徑,可以不填
    *  param secure : 表示cookie的安全標(biāo)志,可以不填
    *  eg : SubCookieUtil.unset("info", "name");
    **/
    unset : function (name, subName, domain, path, secure) {
      var cookies = this.getAll(name);
      if (cookies) {
        delete cookies[subName];
        this.setAll(name, cookies, null, domain, path, secure);
      }
    }  
  };
  // 測(cè)試:
  var zhang = {
    name : "zhang",
    age : 23,
    height : "178cm",
    weight : "66kg"
  }
  // 設(shè)置一條完整的cookie
  SubCookieUtil.setAll("zhang", zhang);
  // 獲取一條完整的cookie
  var zhang = SubCookieUtil.getAll("zhang");
  alert(zhang.weight);  // 66kg
  // 再為張?zhí)砑右粋€(gè)子cookie
  SubCookieUtil.set("zhang", "sport", "basketball");
  // 獲取子cookie
  alert(SubCookieUtil.get("zhang", "sport")); // basketball
  // 刪除一條子cookie
  SubCookieUtil.unset("zhang", "age");
  alert(SubCookieUtil.get("zhang", "age"));  // undefined
  // 刪除一條完整的cookie
  SubCookieUtil.unsetAll("zhang");
  alert(SubCookieUtil.getAll("zhang"));  // 報(bào)錯(cuò),因?yàn)橐呀?jīng)被刪除

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

  • 使用svg實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    使用svg實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果

    這篇文章主要為大家詳細(xì)介紹了如何使用svg實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 自己寫的Javascript計(jì)算時(shí)間差函數(shù)

    自己寫的Javascript計(jì)算時(shí)間差函數(shù)

    Javascript計(jì)算時(shí)間差函數(shù),獲得時(shí)間差,時(shí)間格式為 年-月-日 小時(shí):分鐘:秒 或者 年/月/日 小時(shí):分鐘:秒。
    2013-10-10
  • 解決javascript:window.close()在chrome,Firefox下失效的問題

    解決javascript:window.close()在chrome,Firefox下失效的問題

    本篇文章是對(duì)javascript:window.close()在chrome,Firefox下失效問題的解決方法進(jìn)行了分析介紹。需要的朋友參考下
    2013-05-05
  • javascript從作用域鏈談閉包

    javascript從作用域鏈談閉包

    這篇文章主要從作用域鏈談閉包,閉包(closure)是Javascript語言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn),本文針對(duì)閉包進(jìn)行學(xué)習(xí),需要的朋友可以參考下
    2015-12-12
  • js簡單判斷移動(dòng)端系統(tǒng)的方法

    js簡單判斷移動(dòng)端系統(tǒng)的方法

    這篇文章主要介紹了js簡單判斷移動(dòng)端系統(tǒng)的方法,通過JavaScript的navigator.userAgent相關(guān)屬性判斷訪問端的系統(tǒng)類型,非常簡單實(shí)用,需要的朋友可以參考下
    2016-02-02
  • 顏色選擇器 Color Picker,IE,Firefox,Opera,Safar

    顏色選擇器 Color Picker,IE,Firefox,Opera,Safar

    顏色選擇器 Color Picker,需要的朋友可以參考下。
    2010-11-11
  • JavaScript實(shí)現(xiàn)動(dòng)態(tài)生成表格

    JavaScript實(shí)現(xiàn)動(dòng)態(tài)生成表格

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)生成表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 微信小程序預(yù)覽二進(jìn)制流文件的方法

    微信小程序預(yù)覽二進(jìn)制流文件的方法

    這篇文章主要為大家詳細(xì)介紹了微信小程序預(yù)覽二進(jìn)制流文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JS驗(yàn)證圖片格式和大小并預(yù)覽的簡單實(shí)例

    JS驗(yàn)證圖片格式和大小并預(yù)覽的簡單實(shí)例

    下面小編就為大家?guī)硪黄狫S驗(yàn)證圖片格式和大小并預(yù)覽的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • 最新評(píng)論