讀書筆記——cookie

Cookie是由服務器端生成的,發送給User-Agent(一般是瀏覽器),(服務器告訴瀏覽器設置一下Cookie),瀏覽器會將cookie以key/value 的形式保存在某個目錄下的文本文件內,下一次請求同一網站時就發送該Cookie服務器(前提是瀏覽器設置Cookie)

爲什麼會有Cookie?

http是無狀態協議 狀態都是由Cookie來控制的

Cookie的特點
1.有生命週期
2.滿足同源策略
3.內存大小收到限制(一般是4K左右)

生命週期:
我們可以通過設置cookie的Expires的值來設置一條Cookie信息的失效時間 默認是當瀏覽器關閉的時候失效
我們可以利用new Date() 的 setTime和getTime來設置失效時間

滿足同源策略:
不同源的情況下,Cookie一樣是無法傳遞的。但是我們會發現我們登錄了百度賬號之後,再鄧麗百度知道或百度文庫,賬號都是登錄狀態,但是這幾個網頁之間的主機名是不同的。

這裏就用到了我們前面跨域問題裏提到的document.domain
這幾個百度網頁雖然不同源 但是他們都是.baidu.com主域下的子域,這種情況下罵我們只要把這幾個頁面的document.domain都設置成這個主域的名字,就可以實現跨域通信了
document.domain='baidu.com'

cookie在本地是可以被更改的 敏感數據不要放在Cookie裏

現在我們可以封裝一下Cookie的增刪改查的函數:
function setCoolie(name, value, time) {
var oDate = new Date();
oDate.setDate(oDate.getDate() + time);
document.cookie = name + '=' + value + ';expires' + oDate;
}
function getCookie(key) {
var arr = document.cookie.split(';');
for(var i = 0,len = arr.length; i < len; i ++) {
var temp = arr[i].split('=');
if (temp[i] == key) {
return temp[1];
}
}
}

本地存儲 cookie localstorage sessionstorage
cookie存儲數據不大於4k,過期失效;
localstorage和sessionstorage存儲數據可以達到5M或更大,sessionstorage在當前瀏覽器關閉時失效,而localstorage會一直保持,作爲持久數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章