能夠籠統的將cookie
分爲兩類: 會話cookie
和持久cookie
。會話cookie
是一種臨時cookie
。用戶退出瀏覽器時,會話cookie
就被刪除了。持久cookie
的生存時間更長一些,他們存儲在硬盤上,瀏覽器退出時他們仍然存在。web
會話cookie
和持久cookie
之間惟一的區別就是他們的過時時間。若是設置了Discard參數,或者沒有設置Expires
或Max-Age
參數來講明擴展的過時時間,這個cookie
就是一個會話cookie
瀏覽器
cookie
在性質上是綁定在特定的域名下的。當設定了一個cookie
後,在給它建立他的域名發送請求時,都會包含這個cookie
,這個限制確保了儲存在cookie
中的信息只能讓批准的接受者訪問,而沒法被其餘域返回。安全
因爲cookie
是存在客戶端計算機上的,還加入了一些限制確保cookie
不會被惡意使用。同時不會佔據太多磁盤空間,每一個域的cookie
總數是有限制的。當超過單個域名以後還要設置cookie
,瀏覽器就會清除之前設置的cookie
。服務器
對於cookie
瀏覽器的尺寸也是有限制,大多數瀏覽器爲4kb。cookie
rfc中定義了瀏覽器存放每一個cookie時應該包括這些字段:session
經過document.cookie
來操做cookie
,因爲通過URL
編碼,因此須要經過encodeURIComponent
編碼,decodeURIComponent
解碼。dom
在實際的應用場景中,Cookie作的最多一件事就是保持身份認證的服務端狀態,因此一旦泄露,服務端將沒法判斷這個身份是用戶本人。要避免這種問題能夠有如下這幾種方法編碼
httponly
: 不容許js去操做cookiesecure
: 僅僅在https環境下才能啓用cookie
: 防止篡改expriseIn
和Max-Age
: 設置有效期限web storage的目的是克服由cookie帶來的一些限制,當數據須要被嚴格控制在客戶端上,無需持續的將數據發回服務器。web storage的兩個主要目的是:code
Storage類型提供最大的存儲空間(因瀏覽器而異)來存儲名值對兒。Storage的實例有如下方法:ip
web Storage包含如下兩種機制
sessionStorage
: 爲每個給定的源維持一個獨立的存儲區域,該存儲區域在頁面會話期間可用(即只要瀏覽器處於打開狀態,包括頁面加載和回恢復)localStorage
: 一樣的功能,可是在瀏覽器關閉,而後從新打開後數據仍然存在。對於sessionStorage
和localStorage
的存儲容量,大多數瀏覽器是5MB
cookie
的數據能夠在客戶端和服務端互相傳送,而localStorage
和seesionStorage
只能在客戶端存儲cookie
在每一個域名下只能有20個cookie,每一個cookie不能超過4kb,不然會把以前設置的cookie替代掉。而sessionStorage
和localStorage
則會存儲5MB左右,不過當超過限制時,超限的值不會被定義cookie
能夠經過設置exprise
和Max-Age
來控制有效期,而localStorage
只有用戶才能清空,不然一直存儲在瀏覽器中,sessionStorage
則會存儲到瀏覽器關閉頁面sessionStorage
不在不一樣的瀏覽器頁面中共享,即便是同一個頁面;localStorage
在全部同源窗口中都是共享的;cookie
也是在全部同源窗口中都是共享的。(能夠設置host-only-flag來只讓特定域名下才能夠訪問)