Cookie vs Session

定義

  • Cookie:指網站為了辨別用戶身份而儲存在用戶本地終端上的數據(通常經過加密)。
  • Session:也稱會話,是一種持久網絡協(xié)議,在用戶(或用戶代理)端和服務器端之間創(chuàng)建關聯(lián)嫡秕,從而起到交換數據包的作用機制。

提出的背景

提出Cookie和Session主要是針對Http的無狀態(tài)的設計苹威,Server和Client不會一直保持連線狀態(tài)淘菩,也不會有雙方狀態(tài)的及時更新。因此,Server無法知道Client的狀態(tài)潮改,如登錄信息狭郑、購物車等等。

Cookie就是采用客戶端的狀態(tài)保持方案汇在,而Session則采用服務器端的狀態(tài)保持方案翰萨。

工作原理

1. Cookie

在典型的購物場景中,用戶瀏覽了幾個頁面糕殉,買了一盒餅干和兩瓶飲料亩鬼。最后結賬時由于Http是無狀態(tài)的,不通過額外的手段阿蝶,服務器并不知道用戶到底買了什么雳锋,所以Cookie就是用來解決Http無狀態(tài)的額外方法。服務器可以設置或讀取Cookies中的信息羡洁,借此維護用戶跟服務器會話中的狀態(tài)玷过。

當用戶購買了第一項商品后,服務器向用戶發(fā)送網頁的同時還發(fā)送了一段Cookie(Set-Cookie)筑煮,記錄了那項商品的信息辛蚊。當用戶訪問另外一個頁面時,瀏覽器會把Cookie發(fā)送給服務器真仲,用于服務器知道用戶之前選購了什么袋马。如果用戶繼續(xù)選購,服務器就在原來那段Cookie中添加新的商品信息秸应。結賬時虑凛,服務器就讀取發(fā)送來的Cookie(Get-Cookie)。

Cookie另一個典型的應用場景就是登陸一個網站時软啼,網站往往會請求用戶輸入用戶名和密碼桑谍,并且用戶可以勾選“下次自動登錄”。如果選中后焰宣,下次登陸時霉囚,用戶無須輸入賬戶密碼即可登錄捕仔。這是因為前一次登錄時匕积,服務器發(fā)送了包含登錄憑據(用戶名+密碼的某種加密形式)的Cookie到硬盤上。第二次登錄時榜跌,如果該Cookie還未到期闪唆,則瀏覽器會發(fā)送該Cookie給服務器驗證,于是就可以登陸了钓葫。


Cookie原理示意圖

其具體形式是一小段的文本信息(通過鍵值對表示)悄蕾,主要內容包括:名字、值、過期時間帆调、路徑和域奠骄。需要注意的是Cookie存的文件不能大于4K,很多時候一個站點被限制最多保存20個Cookie番刊。

2. Session

首先介紹一下OSI 7層模型含鳞,如下圖所示:


OSI模型

在不包含會話層(如UDP)或者無法長時間駐留會話層(如Http)的傳輸協(xié)議中,會話的維持需要依靠在傳輸數據中的高級別程序芹务,例如蝉绷,在Http傳輸中,Cookie就會用于包含一些相關信息枣抱,如Session ID熔吗,參數和權限等。

Session機制是一種服務器端的機制佳晶,服務器使用一種類似于散列表的結構來保存信息桅狠。當程序需要為某個客戶端的請求創(chuàng)建一個Session時,服務器首先檢查這個客戶端的請求里是否已包含了一個Session標志(即Session ID)宵晚,如果已包含則說明以前已經為該客戶創(chuàng)建過Session垂攘,服務器就按照Session ID檢索出來使用,若檢索不到則新建一個淤刃。如果客戶端請求不包含Session ID晒他,則為此客戶端創(chuàng)建一個Session并且生成一個與此Session相關聯(lián)的Session ID,這個ID的值應該是一個不會重復又不容易被找到規(guī)律的字符串逸贾,這個Session ID將在本次響應中返回給客戶端保存陨仅。通常來說,保存Session ID的方式可以采用Cookie(也可以使用標準的Query String等方法铝侵,只要可以傳輸即可)灼伤,這樣在交互過程中就可以自動把這個標識發(fā)給服務器了。

一般這個Cookie的名字采用類似于SESSIONID咪鲜,但是Cookie可以被禁止狐赡,因此需要有機制在Cookie被禁的情況也要吧Session ID傳給服務器。經常使用的一種技術叫做URL重寫疟丙,就是把Session ID直接附在URL路徑的后面颖侄。還有一種技術叫表單隱藏字段也可以解決該問題。

兩者聯(lián)系

  • 保存方式:Cookie保存在客戶端(或瀏覽器)享郊;Session保存在服務器览祖。
  • 安全性:Session比Cookie安全。
  • 性能:Cookie消耗本地磁盤空間炊琉;Session消耗服務器資源展蒂。
  • 聯(lián)系:Session大部分時候是基于Cookie使用的。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锰悼,隨后出現(xiàn)的幾起案子柳骄,更是在濱河造成了極大的恐慌,老刑警劉巖箕般,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夹界,死亡現(xiàn)場離奇詭異,居然都是意外死亡隘世,警方通過查閱死者的電腦和手機可柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丙者,“玉大人复斥,你說我怎么就攤上這事⌒得剑” “怎么了目锭?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纷捞。 經常有香客問我痢虹,道長,這世上最難降的妖魔是什么主儡? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任奖唯,我火速辦了婚禮,結果婚禮上糜值,老公的妹妹穿的比我還像新娘丰捷。我一直安慰自己,他們只是感情好寂汇,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布病往。 她就那樣靜靜地躺著,像睡著了一般骄瓣。 火紅的嫁衣襯著肌膚如雪停巷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天榕栏,我揣著相機與錄音畔勤,去河邊找鬼。 笑死臼膏,一個胖子當著我的面吹牛硼被,可吹牛的內容都是我干的示损。 我是一名探鬼主播渗磅,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了始鱼?” 一聲冷哼從身側響起仔掸,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎医清,沒想到半個月后起暮,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡会烙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年负懦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柏腻。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纸厉,死狀恐怖,靈堂內的尸體忽然破棺而出五嫂,到底是詐尸還是另有隱情颗品,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布沃缘,位于F島的核電站躯枢,受9級特大地震影響,放射性物質發(fā)生泄漏槐臀。R本人自食惡果不足惜锄蹂,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望水慨。 院中可真熱鬧败匹,春花似錦、人聲如沸讥巡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欢顷。三九已至槽棍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抬驴,已是汗流浹背炼七。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留布持,地道東北人豌拙。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像题暖,于是被迫代替她去往敵國和親按傅。 傳聞我的和親對象是個殘疾皇子捉超,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容