cookie & session &localStorage 分別是什么


title: cookie & session &localStorage 分別是什么损痰?
tags: cookie & session &localStorage 分別是什么土至?
notebook: 零散知識


Cookie是什么?

  1. Cookie 是瀏覽器訪問服務(wù)器后啡浊,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)
  2. 瀏覽器需要保存這段數(shù)據(jù)觅够,不得輕易刪除。
  3. 此后每次瀏覽器訪問該服務(wù)器巷嚣,都必須帶上這段數(shù)據(jù)喘先。

為什么需要Cookie?

因為HTTP協(xié)議是無狀態(tài)的廷粒,對于一個瀏覽器發(fā)出的多次請求窘拯,WEB服務(wù)器無法區(qū)分 是不是來源于同一個瀏覽器。所以坝茎,需要額外的數(shù)據(jù)用于維護會話涤姊。 Cookie 正是這樣的一段隨HTTP請求一起被傳遞的額外數(shù)據(jù)

Cookie能做什么?

Cookie只是一段文本嗤放,所以它只能保存字符串思喊。而且瀏覽器對它有大小限制以及 它會隨著每次請求被發(fā)送到服務(wù)器,所以應(yīng)該保證它不要太大次酌。 Cookie的內(nèi)容也是明文保存的搔涝,有些瀏覽器提供界面修改,所以和措, 不適合保存重要的或者涉及隱私的內(nèi)容。

Cookie 的限制蜕煌。

大多數(shù)瀏覽器支持最大為 4096 字節(jié)的 Cookie派阱。由于這限制了 Cookie 的大小,最好用 Cookie 來存儲少量數(shù)據(jù)斜纪,或者存儲用戶 ID 之類的標識符贫母。用戶 ID 隨后便可用于標識用戶,以及從數(shù)據(jù)庫或其他數(shù)據(jù)源中讀取用戶信息盒刚。 瀏覽器還限制站點可以在用戶計算機上存儲的 Cookie 的數(shù)量腺劣。大多數(shù)瀏覽器只允許每個站點存儲 20 個 Cookie;如果試圖存儲更多 Cookie因块,則最舊的 Cookie 便會被丟棄橘原。有些瀏覽器還會對它們將接受的來自所有站點的 Cookie 總數(shù)作出絕對限制,通常為 300 個。

如何使用 Cookie

Cookie 一般有兩個作用

  1. 第一個作用是識別用戶身份趾断。
    比如用戶 A 用瀏覽器訪問了 a.com拒名,那么 a.com 的服務(wù)器就會立刻給 A 返回一段數(shù)據(jù)「uid=1」(這就是 Cookie)。當 A 再次訪問 a.com 的其他頁面時芋酌,就會附帶上「uid=1」這段數(shù)據(jù)增显。
    同理,用戶 B 用瀏覽器訪問 a.com 時脐帝,a.com 發(fā)現(xiàn) B 沒有附帶 uid 數(shù)據(jù)同云,就給 B 分配了一個新的 uid,為2堵腹,然后返回給 B 一段數(shù)據(jù)「uid=2」炸站。B 之后訪問 a.com 的時候,就會一直帶上「uid=2」這段數(shù)據(jù)秸滴。

借此武契,a.com 的服務(wù)器就能區(qū)分 A 和 B 兩個用戶了。

  1. 第二個作用是記錄歷史荡含。
    假設(shè) a.com 是一個購物網(wǎng)站咒唆,當 A 在上面將商品 A1 、A2 加入購物車時释液,JS 可以改寫 Cookie,改為「uid=1; cart=A1,A2」误债,表示購物車里有 A1 和 A2 兩樣商品了。

這樣一來寝蹈,當用戶關(guān)閉網(wǎng)頁,過三天再打開網(wǎng)頁的時候箫老,依然可以看到 A1封字、A2 躺在購物車里,因為瀏覽器并不會無緣無故地刪除這個 Cookie耍鬓。

借此,就達到里記錄用戶操作歷史的目的了笆制。

session是什么

當一個用戶打開淘寶登錄后,刷新瀏覽器仍然展示登錄狀態(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 種到瀏覽器指定域名下。
  • 當下次刷新頁面時扎拣,發(fā)送的請求會帶上這條cookie, 服務(wù)端在接收到后根據(jù)這個session_id來識別用戶二蓝。
    cookie 是存儲在瀏覽器里的一小段「數(shù)據(jù)」,而session是一種讓服務(wù)器能識別某個用戶的「機制」踊跟,session 在實現(xiàn)的過程中需要使用cookie鸥诽。 二者不是同一維度的東西。

cookie 雖然很方便牡借,但是使用 cookie 有一個很大的弊端,cookie 中的所有數(shù)據(jù)在客戶端就可以被修改地回,數(shù)據(jù)非常容易被偽造俊鱼,那么一些重要的數(shù)據(jù)就不能存放在 cookie 中了,而且如果 cookie 中數(shù)據(jù)字段太多會影響傳輸效率并闲。為了解決這些問題谷羞,就產(chǎn)生了 session帝火,session 中的數(shù)據(jù)是保留在服務(wù)器端的。
session 的運作通過一個 session_id 來進行犀填。session_id 通常是存放在客戶端的 cookie 中,比如在 express 中图贸,默認是 connect.sid 這個字段,當請求到來時疏日,服務(wù)端檢查 cookie 中保存的 session_id 并通過這個 session_id 與服務(wù)器端的 session data 關(guān)聯(lián)起來撒汉,進行數(shù)據(jù)的保存和修改
這意思就是說,當你瀏覽一個網(wǎng)頁時睬辐,服務(wù)端隨機產(chǎn)生一個 1024 比特長的字符串,然后存在你 cookie 中的 connect.sid 字段中侵俗。當你下次訪問時瓣喊,cookie 會帶有這個字符串,然后瀏覽器就知道你是上次訪問過的某某某藻三,然后從服務(wù)器的存儲中取出上次記錄在你身上的數(shù)據(jù)。由于字符串是隨機產(chǎn)生的熄求,而且位數(shù)足夠多逗概,所以也不擔(dān)心有人能夠偽造。偽造成功的概率比坐在家里編程時被鄰居家的狗突然闖入并咬死的幾率還低逾苫。

localStorage 是什么

  1. localStorage HTML5本地存儲web storage特性的API之一,用于將大量數(shù)據(jù)(最大5M)保存在瀏覽器中瑟押,保存后數(shù)據(jù)永遠存在不會失效過期,除非用 js手動清除星掰。
  2. 不參與網(wǎng)絡(luò)傳輸嫩舟。
  3. 一般用于性能優(yōu)化怀偷,可以保存圖片、js椎工、css、html 模板镰绎、大量數(shù)據(jù)木西。
  4. localstorage在隱私模式下不可讀取
  5. localstorage本質(zhì)是在讀寫文件,數(shù)據(jù)多的話會比較卡(firefox會一次性將數(shù)據(jù)導(dǎo)入內(nèi)存八千,想想就覺得嚇人啊)
  6. localstorage不能被爬蟲爬取照皆,不要用它完全取代URL傳參

localstorage的使用

基礎(chǔ)知識
localstorage存儲對象分為兩種:

  • sessionStrage: session即會話的意思沸停,在這里的session是指用戶瀏覽某個網(wǎng)站時,從進入網(wǎng)站到關(guān)閉網(wǎng)站這個時間段愤钾,session對象的有效期就只有這么長。
  • localStorage: 將數(shù)據(jù)保存在客戶端硬件設(shè)備上杂瘸,不管它是什么伙菊,意思就是下次打開計算機時候數(shù)據(jù)還在。
    兩者區(qū)別就是一個作為臨時保存镜硕,一個長期保存。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末南蹂,一起剝皮案震驚了整個濱河市念恍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峰伙,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件策彤,死亡現(xiàn)場離奇詭異匣摘,居然都是意外死亡,警方通過查閱死者的電腦和手機音榜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門赠叼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘴办,你說我怎么就攤上這事」岜唬” “怎么了妆艘?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長双仍。 經(jīng)常有香客問我,道長苞轿,這世上最難降的妖魔是什么逗物? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮翎卓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘坯门。我一直安慰自己,他們只是感情好古戴,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布现恼。 她就那樣靜靜地躺著,像睡著了一般叉袍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喳逛,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天艺配,我揣著相機與錄音,去河邊找鬼转唉。 笑死,一個胖子當著我的面吹牛赠法,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播款侵,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼侧纯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妹笆?” 一聲冷哼從身側(cè)響起娜氏,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贸弥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哲鸳,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年朝捆,在試婚紗的時候發(fā)現(xiàn)自己被綠了懒豹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驯用。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝴乔,靈堂內(nèi)的尸體忽然破棺而出记餐,到底是詐尸還是另有隱情薇正,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布雕沿,位于F島的核電站猴仑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辽俗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一榴捡、第九天 我趴在偏房一處隱蔽的房頂上張望朱浴。 院中可真熱鬧,春花似錦赊琳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埃碱。三九已至,卻和暖如春砚殿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辛萍。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工羡藐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仆嗦。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓瘩扼,卻偏偏與公主長得像谆甜,于是被迫代替她去往敵國和親集绰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. cookie 1.1 什么是cookie cookie 是存儲于訪問者的計算機中的變量按摘。每當同一臺計算機通過...
    cbw100閱讀 4,064評論 0 13
  • 目錄Cookie機制什么是CookieCookie的不可跨域名性Unicode編碼:保存中文BASE64編碼:保存...
    Tomatoro閱讀 16,957評論 7 186
  • 會話(Session)跟蹤是Web程序中常用的技術(shù)炫贤,用來跟蹤用戶的整個會話付秕。常用的會話跟蹤技術(shù)是Cookie與Se...
    chinariver閱讀 5,627評論 1 49
  • 寶雞古稱陳倉,是關(guān)中西端的門戶勾拉,因雞峰山石雞啼鳴得名,境內(nèi)巍巍群山環(huán)繞藕赞,渭河平川沖擊,呈東部敞開的簸箕形斧蜕,被譽為“...
    旅行人阿奇閱讀 675評論 1 5
  • 人生一世,也不過是一個又一個二十四小時的疊加洒闸,在這樣寶貴的光陰里均芽,我必須明白自己的選擇顷蟀。一生短暫骡技,我們無可辜負的羞反,...
    時遇521閱讀 144評論 0 0