Cookies Session Token 三者區(qū)別及應(yīng)用場(chǎng)景

1.背景

http是無(wú)狀態(tài)鏈接(無(wú)狀態(tài)是指服務(wù)器不知道請(qǐng)求具體來(lái)自于哪個(gè)用戶廷痘,因而不能隨便去操作數(shù)據(jù)庫(kù))蠕搜,而cookies,session和token就是在這個(gè)背景下提出來(lái)的锯玛。三者都是用來(lái)保存用戶的相關(guān)信息的(如用戶標(biāo)志uid...)栅迄、過(guò)期時(shí)間等遭商,隨著客戶端的請(qǐng)求發(fā)送到服務(wù)端用于身份校驗(yàn)邪乍。

2.組成,使用磷杏,有效期溜畅,優(yōu)缺點(diǎn)

1. cookies:由服務(wù)器生成,在客戶端以key-value形式保存用戶信息

  • 組成:下圖就是Chrome瀏覽器中簡(jiǎn)書(shū)網(wǎng)頁(yè)下的cookies(按F12打開(kāi)瀏覽器調(diào)試功能)
    主要是由Name(名字极祸,相當(dāng)于key) + Value(值慈格,即當(dāng)前用戶信息) + Domian(域名) + Path(路徑) + Expires/Max-Age(過(guò)期時(shí)間) + Size(大小)

  • 使用:用于響應(yīng)頭和請(qǐng)求頭中:由服務(wù)器在響應(yīng)頭中設(shè)置遥金,客戶端保存浴捆,并在發(fā)送請(qǐng)求時(shí)請(qǐng)求頭中帶上cookie

  • 有效期:如果有設(shè)置過(guò)期時(shí)間,那么只要時(shí)間還沒(méi)過(guò)期稿械,即使關(guān)閉瀏覽器cookies也還會(huì)存在选泻,反之,會(huì)在瀏覽器關(guān)閉時(shí)消失

  • 優(yōu)缺點(diǎn):優(yōu)點(diǎn)是可以保存客戶相關(guān)信息和狀態(tài)溜哮,這對(duì)于無(wú)狀態(tài)的http請(qǐng)求來(lái)說(shuō)是很重要的(但也不是不可或缺滔金,cookie是通過(guò)http請(qǐng)求報(bào)文head部分中的色解,而在http請(qǐng)求報(bào)文中茂嗓,數(shù)據(jù)除了可以通過(guò)head傳遞餐茵,也可以通過(guò)url或請(qǐng)求體傳遞)因?yàn)橛煽蛻舳吮4妫梢员蝗诵薷氖鑫以趥鬟f過(guò)程中容易被人攔截(一些重要信息需要通過(guò)加密傳輸忿族,而用session則可以把用戶相關(guān)信息和狀態(tài)保存在服務(wù)器,所以能避免信息外泄的問(wèn)題)蝌矛,具有安全隱患道批;且在某些瀏覽器上能保存的cookies數(shù)量和大小有限制;還有就是不支持跨域訪問(wèn)(Token可解決這個(gè)問(wèn)題)

2. session:在服務(wù)端生成入撒,以key-value形式保存用戶信息

  • 組成:session保存在服務(wù)器內(nèi)存中隆豹,維持一個(gè)hash表保存用戶相關(guān)信息(也是key-value形式)

  • 使用:一個(gè)用戶對(duì)應(yīng)一個(gè)session,每個(gè)session都有它獨(dú)一無(wú)二的sessionid茅逮,sessionid隨響應(yīng)頭set-cookie保存到客戶端的cookies中璃赡。客戶端發(fā)送請(qǐng)求時(shí)帶上cookies献雅,服務(wù)端從cookies中拿到sessioid碉考,然后根據(jù)sessionid從內(nèi)存中找到對(duì)應(yīng)用戶的session獲取相關(guān)用戶信息

  • 有效期:session默認(rèn)30分鐘超時(shí),即如果在30分鐘內(nèi)session沒(méi)有被訪問(wèn)過(guò)挺身,那么就失效了侯谁。

  • 優(yōu)缺點(diǎn):能夠解決cookies的安全隱患,但因?yàn)楸4嬖诜?wù)器內(nèi)存中章钾,當(dāng)同時(shí)訪問(wèn)的用戶很多時(shí)內(nèi)存占用爭(zhēng)奪墙贱,性能會(huì)受到影響

3. token:訪問(wèn)令牌--> 一個(gè)服務(wù)端生成的獨(dú)一無(wú)二的字符串

  • 組成:登錄時(shí)由服務(wù)端生成,一般組成形式:uuid(用戶唯一身份標(biāo)志)+time(時(shí)間戳)+sign(簽名=uuid+time+salt根據(jù)hash算法生成的字符串)+[常用的固定參數(shù)(可選)]

  • 使用:服務(wù)端生成后隨http響應(yīng)保存在客戶端的cookies或local storage中贱傀,隨客戶端請(qǐng)求發(fā)送至服務(wù)端嫩痰,用于單點(diǎn)登錄的身份驗(yàn)證,防止跨站點(diǎn)請(qǐng)求偽造等

  • 有效期:根據(jù)token中的時(shí)間戳跟當(dāng)前時(shí)間對(duì)比計(jì)算窍箍,看過(guò)期與否串纺,有效期默認(rèn)7天,用戶退出時(shí)直接銷毀token(???)

  • 優(yōu)缺點(diǎn):支持跨域訪問(wèn)椰棘,防止信息外泄纺棺,可以在多個(gè)服務(wù)間共享。且不像session存儲(chǔ)于服務(wù)器內(nèi)存中邪狞,不影響服務(wù)器的性能祷蝌,但是需要額外的時(shí)間開(kāi)銷(cpu需要每次去校驗(yàn)傳過(guò)來(lái)的token是否有效(保存在服務(wù)器內(nèi)存中性能是不是會(huì)更好,還是說(shuō)有多種實(shí)現(xiàn)方案帆卓,自己衡量巨朦?米丘??))
    token實(shí)現(xiàn)方案的討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糊啡,一起剝皮案震驚了整個(gè)濱河市拄查,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棚蓄,老刑警劉巖堕扶,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梭依,居然都是意外死亡稍算,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)役拴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)糊探,“玉大人,你說(shuō)我怎么就攤上這事河闰】破剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵淤击,是天一觀的道長(zhǎng)匠抗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)污抬,這世上最難降的妖魔是什么汞贸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮印机,結(jié)果婚禮上矢腻,老公的妹妹穿的比我還像新娘。我一直安慰自己射赛,他們只是感情好多柑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著楣责,像睡著了一般竣灌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秆麸,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天初嘹,我揣著相機(jī)與錄音,去河邊找鬼沮趣。 笑死屯烦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驻龟,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼温眉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了翁狐?” 一聲冷哼從身側(cè)響起类溢,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谴蔑,沒(méi)想到半個(gè)月后豌骏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體龟梦,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡隐锭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了计贰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钦睡。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖躁倒,靈堂內(nèi)的尸體忽然破棺而出荞怒,到底是詐尸還是另有隱情,我是刑警寧澤秧秉,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布褐桌,位于F島的核電站,受9級(jí)特大地震影響象迎,放射性物質(zhì)發(fā)生泄漏荧嵌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一砾淌、第九天 我趴在偏房一處隱蔽的房頂上張望啦撮。 院中可真熱鬧,春花似錦汪厨、人聲如沸赃春。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)织中。三九已至,卻和暖如春衷戈,著一層夾襖步出監(jiān)牢的瞬間狭吼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工脱惰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搏嗡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像采盒,于是被迫代替她去往敵國(guó)和親旧乞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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