Storage就是指我們的存儲:
Coolie對應(yīng)的里面有Name,Value憨颠,Domain胳徽,Path和Expires。
Domain表示Cookie在哪個域下是生效的爽彤。Expires表示生效時間养盗,過了這個時間會自動失效。簡而言之适篙,cookie就是在當(dāng)前域名下存儲的一點點數(shù)據(jù)厂置,數(shù)據(jù)量很小端逼,不能超過4k。
- cookie是存儲在瀏覽器上的一小段數(shù)據(jù),用來記錄某些當(dāng)頁面關(guān)閉或者刷新后仍然需要記錄的信息迹恐。在控制臺用 「document.cookie」查看你當(dāng)前正在瀏覽的網(wǎng)站的cookie覆糟。
- cookie可以使用 js 在瀏覽器直接設(shè)置(用于記錄不敏感信息椒惨,如用戶名), 也可以在服務(wù)端通使用 HTTP 協(xié)議規(guī)定的 set-cookie 來讓瀏覽器種下cookie碌奉,這是最常見的做法。(打開一個網(wǎng)站碍论,清除全部cookie谅猾,然后刷新頁面,在network的Response headers試試找一找set-cookie吧)
- 每次網(wǎng)絡(luò)請求 Request headers 中都會帶上cookie鳍悠。所以如果 cookie 太多太大對傳輸效率會有影響税娜。
一般瀏覽器存儲cookie 最大容量為4k,所以大量數(shù)據(jù)不要存到cookie藏研。
假如我們清空本頁面的cookie敬矩,然后刷新頁面,會看到重新產(chǎn)生cookie蠢挡,那么這些cookie是誰設(shè)上去的呢弧岳?答案是響應(yīng)頭里面的set-cookie,瀏覽器看到set-cookie這個字段之后业踏,就把cookie種到當(dāng)前的頁面下:
之后禽炬,瀏覽器發(fā)的請求都會帶上這個cookie:
那么,cookie的作用是什么呢勤家?
- 記錄用戶名
設(shè)置cookie時的參數(shù):
path:表示 cookie 影響到的路徑腹尖,匹配該路徑才發(fā)送這個 cookie。expires 和 maxAge:告訴瀏覽器 cookie 時候過期伐脖,maxAge 是 cookie 多久后過期的相對時間热幔。不設(shè)置這兩個選項時會產(chǎn)生 session cookie乐设,session cookie 是 transient 的,當(dāng)用戶關(guān)閉瀏覽器時绎巨,就被清除近尚。一般用來保存 session 的 session_id。
secure:當(dāng) secure 值為 true 時场勤,cookie 在 HTTP 中是無效肿男,在 HTTPS 中才有效
localStorage
localStorage.jpg
localStorage比較簡單,對應(yīng)的只有key和value却嗡,它的存儲量會大很多,5M甚至10M都有嘹承,他沒有時間限制窗价,即使把頁面關(guān)掉,下次重新打開叹卷,他仍然存在撼港。
使用JS可以操控localStorage:
如果要將某個對象存入localStorage里去,那么先通過JSON.Stringify()方法將對象轉(zhuǎn)化成JSON字符串再存進去骤竹,例如:
- localStorage HTML5本地存儲web storage特性的API之一帝牡,用于將大量數(shù)據(jù)(最大5M)保存在瀏覽器中,保存后數(shù)據(jù)永遠存在不會失效過期蒙揣,除非用 js手動清除靶溜。
- 不參與網(wǎng)絡(luò)傳輸。
- 一般用于性能優(yōu)化懒震,可以保存圖片罩息、js、css个扰、html 模板瓷炮、大量數(shù)據(jù)。
Session
當(dāng)一個用戶打開淘寶登錄后递宅,刷新瀏覽器仍然展示登錄狀態(tài)娘香。服務(wù)器如何分辨這次發(fā)起請求的用戶是剛才登錄過的用戶呢?
這里就使用了session保存狀態(tài)办龄。用戶在輸入用戶名密碼提交給服務(wù)端烘绽,服務(wù)端驗證通過后會創(chuàng)建一個session用于記錄用戶的相關(guān)信息,這個 session 可保存在服務(wù)器內(nèi)存中土榴,也可保存在數(shù)據(jù)庫中诀姚。
創(chuàng)建session后,會把關(guān)聯(lián)的session_id 通過setCookie 添加到http響應(yīng)頭部中玷禽。
瀏覽器在加載頁面時發(fā)現(xiàn)響應(yīng)頭部有 set-cookie字段赫段,就把這個cookie 種到瀏覽器指定域名下呀打。
當(dāng)下次刷新頁面時,發(fā)送的請求會帶上這條cookie糯笙, 服務(wù)端在接收到后根據(jù)這個session_id來識別用戶贬丛。
cookie 是存儲在瀏覽器里的一小段「數(shù)據(jù)」,而session是一種讓服務(wù)器能識別某個用戶的「機制」给涕,session 在實現(xiàn)的過程中需要使用cookie豺憔。 二者不是同一維度的東西。