共同點:
都是保存在瀏覽器端,且同源的。
區(qū)別:
1、cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來回傳遞。而sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。
2、cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個路徑下。
3、存儲大小限制也不同,cookie數(shù)據(jù)不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會話標(biāo)識。sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。
4、數(shù)據(jù)有效期不同,sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或瀏覽器關(guān)閉也一直保存,因此用作持久數(shù)據(jù);cookie只在設(shè)置的cookie過期時間之前一直有效,即使窗口或瀏覽器關(guān)閉。
5、作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
6、Web Storage 支持事件通知機制,可以將數(shù)據(jù)更新的通知發(fā)送給監(jiān)聽者。Web Storage 的 api 接口使用更方便。
7、安全性:cookie:針對cookie所存在的攻擊:Cookie欺騙,Cookie截獲。WebStorage不會隨著HTTP header發(fā)送到服務(wù)器端,所以安全性相對于cookie來說比較高一些,不會擔(dān)心截獲,但是仍然存在偽造問題