是什麼
- web伺服器存儲在你本地磁盤的一個小的文本檔案
- cookie記錄了你的使用者名,密碼,浏覽的網頁等
屬性
- Expires ,Max Age:
都用來指定cookie的過期時間;
2. Expires在HTTP/1.0中定義。max-age在HTTP/1.1中才有定義;
3. Expires指定一個絕對的過期時間(GMT格式)。max-age 指定的是從文檔被通路後的存活時間,這個時間是個相對值(比如:3600s),相對的是文檔第一次被請求時伺服器記錄的Request_time(請求時間),
- Domain和Path
Domain是域名,Path是路徑,兩者加起來就構成了 URL,Domain和Path一起來限制 cookie 能被哪些 URL 通路。
- size
cookie的大小
- Secure
Secure選項用來設定cookie隻在確定安全的請求中才會發送。當請求是HTTPS或者其他安全協定時,包含 Secure選項的
cookie 才能被發送至伺服器。
- 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表示:已經過期。
}
缺點
- 每個特定域名下的cookie數量有限,E6或更低版本最多20個cookie,IE7及之後可以有50個cookie,firefox最多50個cookie;
- 存儲量太小,隻有4KB;
- 每次HTTP請求都會發送到服務端,影響擷取資源的效率;
- 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session資訊。即使加密也與事無補,因為攔截者并不需要知道cookie的意義,他隻要原樣轉發cookie就可以達到目的了。;