Cookie和Session, since 2022-05-24

(2022.05.24 Tues)
HTTP作為無狀態(tài)協(xié)議(stateless protocol)怪瓶,在服務器端不保存客戶端信息,因而對于服務器端來說,接收到的不同請求是獨立的怎虫,服務器端無法判斷相鄰的請求是否來自同一個客戶端。同時服務器端不維護/保存客戶端信息困介。而對于需要將來自同一客戶端的不同請求聯(lián)系在一起的場景和應用來說大审,無狀態(tài)特性顯然并不方便。

因此引入cookie和session用于記錄用戶信息座哩。

Cookie

Cookie是保留在客戶端client的一段信息徒扶。客戶端與服務器首次連接時根穷,客戶端的請求報文中不含cookie姜骡,而服務器的第一次響應報文header中會包含cookie信息,即Set-Cookie: <cookie-name>=<cookie-value>屿良,信息以key-value對的形式保存圈澈。客戶端保留此cookie信息尘惧,在之后向服務器發(fā)送請求的時候在header加入cookie信息康栈。服務器可依據(jù)cookie信息做出有針對性的響應。客戶端的瀏覽器可以禁止cookie使用谅将。Cookie最大只有4KB漾狼,瀏覽器端可保留上百個。

Cookie的作用

會話管理(session management)
登錄饥臂、購物車逊躁、游戲分數(shù)以及需要服務器記錄的其他信息
定制化
用戶喜好、主題和其他設定
追蹤
記錄和分析用戶行為

Cookie初始化和使用

Set-Cookie信息中除了包含key-value對隅熙,還可以包括過期時間(Expires)稽煤、存活時長(Max-Age)、cookie發(fā)往的域名(Domain)和路徑(Path)囚戚、是否使用HTTPS協(xié)議(Secure/HttpOnly)等酵熙。如下面案例

Set-Cookie: SessionID=38afes7a8; Max-Age=259200; Domain=somecompany.co.uk; Path=/docs;Secure

在這個cookie中,指定了sessionid驰坊,最大存活時間(秒)匾二,域名,和是否使用HTTPS拳芙。

如果沒有指定Max-AgeExpires察藐,則該cookie被認為是永久的,成為一個session-cookie舟扎,只有在客戶端或客戶端瀏覽器關(guān)閉時才會刪除/退出該cookie分飞,也就是結(jié)束session。當指定的時間到達之后睹限,該cookie在瀏覽器上被刪除譬猫。

該cookie也指定了域名,如果服務器的域名與cookie中的域名不同羡疗,則服務器拒絕接收該cookie染服。

該cookie還有一個Secure標志,此標志出現(xiàn)代表著客戶端只使用HTTPS協(xié)議向服務器發(fā)送cookie叨恨,man-in-the-middle攻擊對該cookie無效肌索。但注意該cookie在客戶端仍然可被其他瀏覽器訪問。

該cookie中還有Path=/docs標志特碳,指定了在host上可以訪問的路徑,比如/docs晕换,/docs/web午乓,/docs/hs等等由Path指定路徑和次級路徑。

瀏覽器向服務器返回信息的header中需要加入Cookie字段闸准,如

Cookie: SessionID=38afes7a8

Cookie的不安全性

客戶端的cookie并不非常安全益愈,客戶端的其他瀏覽器可讀取/分享cookie文件。

Session會話

session在服務器端臨時保存用戶信息用于跨頁面的訪問,是活躍活動的總時間蒸其。用戶session始于登錄終于退出或關(guān)閉瀏覽器敏释,之后session被自動刪除。當然可以將session保存在數(shù)據(jù)庫中避免用戶信息丟失摸袁。前面提到的cookie是服務器用于實現(xiàn)session的工具钥顽,cookie中保存session的唯一標識符,如SessionID之類的靠汁。session較cookie更加安全蜂大,因保存在服務器端,被加密/存為二進制形式蝶怔。因session的安全性奶浦,在配合cookie使用時,session保存更關(guān)鍵和不可泄露信息踢星,cookie保存其他信息澳叉。

對每個用戶來說,session是獨一無二的沐悦。

服務器上session沒有個數(shù)限制成洗,但是過多顯然影響服務器性能。

Cookie Vs. Session

feature Cookie Session
存放位置 client server
安全性 不安全 加密所踊、安全
容量 <4KB 無限制
格式 字符 任意格式

另外泌枪,session取決于cookie,而cookie不依賴于session秕岛,比如session需要讀取cookie的SessionID碌燕,如果client瀏覽器禁用cookie則只能通過在URL中傳遞sessionid實現(xiàn),否則服務器端無法保留session继薛。session和cookie的消失取決于cookie中的過期日期修壕,或用戶是否退出,或關(guān)閉瀏覽器遏考。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慈鸠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子灌具,更是在濱河造成了極大的恐慌青团,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咖楣,死亡現(xiàn)場離奇詭異督笆,居然都是意外死亡,警方通過查閱死者的電腦和手機诱贿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門娃肿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咕缎,“玉大人,你說我怎么就攤上這事料扰∑竞溃” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵晒杈,是天一觀的道長嫂伞。 經(jīng)常有香客問我,道長桐智,這世上最難降的妖魔是什么末早? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮说庭,結(jié)果婚禮上然磷,老公的妹妹穿的比我還像新娘。我一直安慰自己刊驴,他們只是感情好姿搜,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捆憎,像睡著了一般舅柜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上躲惰,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天致份,我揣著相機與錄音,去河邊找鬼础拨。 笑死氮块,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的诡宗。 我是一名探鬼主播滔蝉,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼塔沃!你這毒婦竟也來了蝠引?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛀柴,失蹤者是張志新(化名)和其女友劉穎螃概,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸽疾,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡谅年,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肮韧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弄企,靈堂內(nèi)的尸體忽然破棺而出超燃,到底是詐尸還是另有隱情,我是刑警寧澤拘领,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布意乓,位于F島的核電站,受9級特大地震影響约素,放射性物質(zhì)發(fā)生泄漏届良。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一圣猎、第九天 我趴在偏房一處隱蔽的房頂上張望士葫。 院中可真熱鬧,春花似錦送悔、人聲如沸慢显。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荚藻。三九已至,卻和暖如春洁段,著一層夾襖步出監(jiān)牢的瞬間应狱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工祠丝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疾呻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓纽疟,卻偏偏與公主長得像罐韩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子污朽,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

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