天天看點

cookie

是什麼

  1. web伺服器存儲在你本地磁盤的一個小的文本檔案
  2. cookie記錄了你的使用者名,密碼,浏覽的網頁等

屬性

  1. Expires ,Max Age:
  1. 都用來指定cookie的過期時間;

    2. Expires在HTTP/1.0中定義。max-age在HTTP/1.1中才有定義;

    3. Expires指定一個絕對的過期時間(GMT格式)。max-age 指定的是從文檔被通路後的存活時間,這個時間是個相對值(比如:3600s),相對的是文檔第一次被請求時伺服器記錄的Request_time(請求時間),

  1. Domain和Path
Domain是域名,Path是路徑,兩者加起來就構成了 URL,Domain和Path一起來限制 cookie 能被哪些 URL 通路。
  1. size
cookie的大小
  1. Secure

Secure選項用來設定cookie隻在確定安全的請求中才會發送。當請求是HTTPS或者其他安全協定時,包含 Secure選項的

cookie 才能被發送至伺服器。

  1. httpOnly
設定cookie是否能通過 js 去通路

用戶端設定cookie

方法:

document.cookie=“name=123”;      

注意:

document.cookie="name=syl; age=18"      

這樣的話隻有name生效,即每次隻能設定一個。是以需要封裝或者多次調用。

封裝:

//設定cookies
function setCookie(name,value,MyDay){
    var ExDate = new Date();
    ExDate.setDate(ExDate.getDate() + MyDay);//如果需要時間的話以這樣擷取。
    document.cookie = name + "=" + value + ";expires=" + ExDate;
}
//擷取cookies
function getCookie(name){
    //例如cookie是"username=abc; password=123"
    var arr = document.cookie.split('; ');//用“;”和空格來劃分cookie
    for(var i = 0 ;i < arr.length ; i++){
        var arr2 = arr[i].split("=");
        if(arr2[0] == name){
            return arr2[1];
        }
    }
    return "";//整個周遊完沒找到,就傳回空值
}
//删除cookies
function removeCookie(name){
    setCookie(name, "1", -1)//第二個value值随便設個值,第三個值設為-1表示:已經過期。
}      

缺點

  1. 每個特定域名下的cookie數量有限,E6或更低版本最多20個cookie,IE7及之後可以有50個cookie,firefox最多50個cookie;
  2. 存儲量太小,隻有4KB;
  3. 每次HTTP請求都會發送到服務端,影響擷取資源的效率;
  4. 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session資訊。即使加密也與事無補,因為攔截者并不需要知道cookie的意義,他隻要原樣轉發cookie就可以達到目的了。;

繼續閱讀