Session原理

無狀態(tài)的 HTTP 協(xié)議

還記得每當(dāng)入門一門 Web 端語(yǔ)言的進(jìn)行服務(wù)器端開發(fā)的時(shí)候,僅次于「Hello World」的 demo 就是「登錄功能」了祈噪。實(shí)現(xiàn)登錄功能很簡(jiǎn)單台妆,驗(yàn)證客戶端發(fā)送過來的賬戶和密碼绽榛,如果通過驗(yàn)證就把用戶塞進(jìn) session 中瞭郑,然后在后續(xù)的訪問中,只需檢測(cè) session 是否有這個(gè)用戶就能知道用戶是否登錄了伍派。Session 的中文翻譯為:「會(huì)話」江耀,只屬于某一個(gè)客戶端和某一個(gè)服務(wù)器端溝通的工具。但,計(jì)算機(jī)網(wǎng)絡(luò)老師又說了,HTTP 協(xié)議是無狀態(tài)的咬崔,怎么能記錄用戶的登錄狀態(tài)呢清焕?
鑒于 HTTP 是無狀態(tài)協(xié)議灯荧,之前已認(rèn)證成功的用戶狀態(tài)是無法通過協(xié)議層面保存下來的,既,無法實(shí)現(xiàn)狀態(tài)管理,因此即使當(dāng)該用戶下一次繼續(xù)訪問壁查,也無法區(qū)分他和其他的用戶。于是我們會(huì)使用 Cookie 來管理 Session剔应,以彌補(bǔ) HTTP 協(xié)議中不存在的狀態(tài)管理功能睡腿。

利用 Cookie 管理 Session

Session 管理及 Cookie 狀態(tài)管理
  • 步驟 1:客戶端把用戶 ID 和密碼等登錄信息放入報(bào)文的實(shí)體部分,通常是以 POST 方法把請(qǐng)求發(fā)送給服務(wù)器峻贮。

  • 步驟 2:服務(wù)器會(huì)發(fā)放用以識(shí)別用戶的 Session ID嫉到。通過驗(yàn)證從客戶端發(fā)送過來的登錄信息進(jìn)行身份驗(yàn)證,然后把用戶的認(rèn)證狀態(tài)與 Session ID 綁定后記錄在服務(wù)器端月洛。向客戶端返回響應(yīng)時(shí),會(huì)在首部字段 Set-Cookie 內(nèi)寫入 Session ID孽锥。

  • 步驟 3:客戶端接收到從服務(wù)器端發(fā)來的 Session ID 后嚼黔,會(huì)將其作為 Cookie 保存在本地。下次向服務(wù)器發(fā)送請(qǐng)求時(shí)惜辑,瀏覽器會(huì)自動(dòng)發(fā)送 Cookie唬涧,所以 Session ID 也隨之發(fā)送到服務(wù)器。服務(wù)器端可通過驗(yàn)證接收到的 Session ID 識(shí)別用戶和其認(rèn)證狀態(tài)盛撑。

為 Cookie 服務(wù)的 HTTP 首部字段

  • Set-Cookie
  • Cookie

Set-Cookie

服務(wù)器管理狀態(tài)使用到的字段碎节,用于響應(yīng)首部
一則響應(yīng)首部的 Set-Cookie 字段:

Set-Cookie: status=enable; expires= Tue, 05 Jul 2011 07:26:31 GMT; path=/; domain=.hackr.jp;

Set-Cookie 字段的屬性:

屬性 說明
NAME=VALUE 賦予 Cookie 的名稱和其值(必須項(xiàng))
expires=DATE Cookie 的有效期(若不明確指定則默認(rèn)為瀏覽器關(guān)閉前為止)
path=PATH 將服務(wù)器上的文件目錄作為 Cookie 的適用對(duì)象(若不指定則默認(rèn)為文檔所在的目錄)
domain=域名 作為 Cookie 適用對(duì)象的域名(若不指定則默認(rèn)為創(chuàng)建 Cookie 的服務(wù)器的域名)
Secure 僅在 HTTPS 安全通信時(shí)才會(huì)發(fā)送 Cookie
HttpOnly 加以限制,使 Cookie 不能被 Javascript 腳本訪問

Cookie

首部字段 Cookie 會(huì)告知服務(wù)器抵卫,當(dāng)客戶端想獲得 HTTP 狀態(tài)管理支持時(shí)狮荔,就會(huì)在請(qǐng)求中包含從服務(wù)器接收到的 Cookie胎撇。接收到多個(gè) Cookie 時(shí),同樣可以以多個(gè) Cookie 形式發(fā)送殖氏。


如果本文對(duì)您有用
請(qǐng)不要吝嗇你們的Follow與Start
這會(huì)大大支持我們繼續(xù)創(chuàng)作

「Github」
MZMonster :@MZMonster
JC_Huang :@JerryC8080

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晚树,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雅采,更是在濱河造成了極大的恐慌爵憎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚瓜,死亡現(xiàn)場(chǎng)離奇詭異宝鼓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巴刻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門愚铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冈涧,你說我怎么就攤上這事茂附。” “怎么了督弓?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵营曼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我愚隧,道長(zhǎng)蒂阱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任狂塘,我火速辦了婚禮录煤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荞胡。我一直安慰自己妈踊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布泪漂。 她就那樣靜靜地躺著廊营,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萝勤。 梳的紋絲不亂的頭發(fā)上露筒,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音敌卓,去河邊找鬼慎式。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瘪吏。 我是一名探鬼主播癣防,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼肪虎!你這毒婦竟也來了劣砍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤扇救,失蹤者是張志新(化名)和其女友劉穎刑枝,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迅腔,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡装畅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沧烈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掠兄。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锌雀,靈堂內(nèi)的尸體忽然破棺而出蚂夕,到底是詐尸還是另有隱情,我是刑警寧澤腋逆,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布婿牍,位于F島的核電站,受9級(jí)特大地震影響惩歉,放射性物質(zhì)發(fā)生泄漏等脂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一撑蚌、第九天 我趴在偏房一處隱蔽的房頂上張望上遥。 院中可真熱鬧,春花似錦争涌、人聲如沸粉楚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)解幼。三九已至,卻和暖如春包警,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背底靠。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工害晦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓壹瘟,卻偏偏與公主長(zhǎng)得像鲫剿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稻轨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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