cookie詳解

1、 什麼是cookie

A cookie is a small stub of information left by a website on a visitor's computer through the web browser.javascript

HTTP cookie,一般稱爲cookie,用於在客戶端存儲會話信息。java

2、 cookie的構成

通常有如下幾部分組成web

set cookie: name=value; domain=.mozilla.org; expires=Feb, 13-Mar-2018 11:47:50; path=/; secure編程

  • 名稱:一個惟一肯定cookie的名稱,部分大小寫,cookie的名字必須是通過URL編碼的,通常能夠採用某個前綴在加上當前時間的作法,這樣的話名稱可以確保是惟一的,也比較方便。瀏覽器

  • 值:存儲在cookie中的字符串值,必須通過被URL編碼安全

  • 域:對於哪一個域是有效的,若是沒有設置的話,默認來自設置cookie的那個域,在上訴例子中就是.Mozilla.org服務器

  • 失效時間:表示cookie什麼時候應該被刪除的時間戳,這個日期是GMT格式的日期,若是設置是之前的時間,cookie會被馬上刪除。上訴cookie的失效時間是Feb,13-Mar-2018 11:47:50。cookie

  • 路徑:指定域中的那個路徑,應該想服務器發送cookie,/ 表示沒有限制
    安全標誌:指定之後,cookie只有在使用SSL鏈接的時候才能夠發送到服務器。session

3、cookie常見操做

1. cookie的創建

function setCookie(name,value,expiredate,domain,path,secure){
    var cookieText=escape(name)+"="+escape(value);
    if(expiredate){
        var exdate=new Date();
        exdate.setDate(exdate.getDate()+expiredate);
        cookieText+=";expires="+exdate.toGMTString();
    }
    if(domain){
        cookieText+=";domain="+domain;
    }
    if(path){
        cookieText+=";path="+path;
    }
    if(secure){
        cookieText+=";secure";
    }
    document.cookie=cookieText;
}

把這六個參數傳入進去,或者傳入幾個參數就能夠了,必須傳入的參數爲name和value。
調用的方式能夠以下:dom

setCookie("my","hello world","January 1,2017");

2.cookie的查詢

function getCookie(name){
    var cookieName=encodeURIComponent(name)+"=",
    cookieStart=document.cookie.indexOf(cookieName),
    cookieValue=null;
    if(cookieStart>-1){
        var cookieEnd=document.cookie.indexOf(";",cookieStart);
        if(cookieEnd==-1){
            cookieEnd=document.cookie.Length;
        }
        cookieValue=decodeURIComponent(document.cookie.substring(cookieStart+document.cookie.length,cookieEnd));
    }
    return cookieValue;
}

主要的思路是經過找到字符串的開頭和結尾,而後經過substring()函數把value值提取出來。

3.cookie的刪除

function deCookie(name,value,expiredate,domain,path,secure){
    this.setCookie(name,"",new Date(0),domain,path,secure);
    }

從新定義cookie,把時間調爲過去,原先的cookie就會失效,value也被設置爲空值,這樣就能夠刪除一個cookie。

4、 cookie的應用

  • 購物車(網購)

  • 自動登陸(登陸帳號時的自動登陸)

  • 精準廣告
    日常瀏覽網頁時有時會推出商品恰好是你最近瀏覽過,買過的相似東西,這些是經過cookie記錄的。

  • 記住登陸狀態

5、cookie優勢

  1. 經過良好的編程,控制保存在cookie中的session對象的大小。

  2. 經過加密和安全傳輸技術(SSL),減小cookie被破解的可能性。

  3. 只在cookie中存放不敏感數據,即便被盜也不會有重大損失。

  4. 控制cookie的生命期,使之不會永遠有效。偷盜者極可能拿到一個過時的cookie。、

  5. 不須要服務器資源,直接存儲在本地。

6、cookie缺點

1. 每一個域的cookie總數是有限的,不一樣瀏覽器之間各有不一樣。

  • IE6以及更低版本限制每一個域名最多20個cookie

  • IE7以後的版本每一個域名最多50個。

  • Firefox限制每一個與最多50個cookie

  • Safari和Chrome對於每一個域的cookie數量限制沒有硬性規定。

2.cookie的清理

IE和Opera會刪除最近最少使用過的cookie,可是Firefox是隨機決定要清除哪一個cookie。

3. cookie大小的限制

大多數瀏覽器4096B的長度限制,爲了兼容多種瀏覽器,最好將長度限制在4095B之內.
每一個domain最多隻能有20條cookie。

4. 安全性

Cookie文件中可能含有涉密信息,可能會致使信息泄露。
Cookie能夠被改寫,欺騙服務程序或者蒐集資料從事非法活動。

7、參考資料

  1. Document.cookie

  2. 《JavaScript高級程序設計》Nicholas C.Zakas著 李鬆峯 曹力譯

相關文章
相關標籤/搜索