淺談cookie和session

相關(guān)視頻:v.qq.com/x/page/f0513vvyti4.html

PPT:ptteng.github.io/PPT/PPT/java-05%20cookie&session.html#/

一個小例子:

星巴克開始優(yōu)惠活動,每消費(fèi)10杯咖啡,會免費(fèi)贈送1杯。考慮到一個人一次性消費(fèi)10杯咖啡幾乎不可能,所以需要采取某種方式來記錄顧客的消費(fèi)數(shù)量。

解決方案:

1,店員很厲害,每個顧客的消費(fèi)記錄都記得一清二楚;

2,分給顧客一張卡片,每消費(fèi)一次記錄一次;

3,發(fā)給顧客一張卡片,上面有卡號,顧客每消費(fèi)一次,由店員在操作機(jī)上記錄一次。

從生活上來看,方案一的可執(zhí)行性幾乎為0,方案二和方案三我們都見過。

而方案二和三正是對應(yīng)的客戶端記錄和服務(wù)端記錄。與之相對應(yīng)的正式cookie和session。

好了,我們進(jìn)入正題。

我們知道HTTP協(xié)議是一種無狀態(tài)的協(xié)議,數(shù)據(jù)一旦交換完畢,客戶端與服務(wù)端的連接就會關(guān)閉,再次交換數(shù)據(jù)需要重新建立連接。而我們有時(shí)候又有跟蹤會話的需求,所以必須引入一種機(jī)制:cookie。

什么是cookie?

cookie是一小段文本信息,它記錄了一個用戶訪問某個網(wǎng)站時(shí)的用戶信息。

cookie機(jī)制

cookie機(jī)制其實(shí)在前面已經(jīng)說了,但cookie需要解決三個問題:分發(fā)、內(nèi)容和使用。

cookie的分發(fā)是通過擴(kuò)展HTTP協(xié)議來實(shí)現(xiàn)的,服務(wù)器端通過在HTTP的響應(yīng)由中加上一行特殊的指示以提示瀏覽器按照指示生成相應(yīng)的cookie。

cookie的內(nèi)容主要包括名字、值、過期時(shí)間、路徑和域。

cookie的使用是由瀏覽器按照一定的原則在后臺自動發(fā)送給服務(wù)器。瀏覽器檢查所有存儲的cookie,如果某個cookie所聲明的作用范圍大于等于將要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上發(fā)送給服務(wù)器。

cookie屬性

name:cookie的名字,一旦創(chuàng)建,名稱不可更改。

value:cookie的值,如果值為Unicode字符,需要為字符編碼。如果為二進(jìn)制數(shù)據(jù),則需要使用BASE64編碼。

maxAge:cookie失效時(shí)間,單位秒。如果為正數(shù),則該cookie在maxAge后失效。如果為負(fù)數(shù),該cookie為臨時(shí)cookie,關(guān)閉瀏覽器即失效,瀏覽器也不會以任何形式保存該cookie。如果為0,表示刪除該cookie。默認(rèn)為-1。

secure:該cookie是否僅被使用安全協(xié)議傳輸。

path:該cookie的使用路徑。如果設(shè)置為"/sessionWeb/",則只有ContextPath為“/sessionWeb/”的程序可以訪問該cookie。如果設(shè)置為“/”,則本域名下ContextPath都可以訪問該cookie。

session機(jī)制

session機(jī)制是一種服務(wù)端的機(jī)制,服務(wù)器使用一種類似散列表的結(jié)構(gòu)來保存信息。

當(dāng)程序需要為某個客戶端的請求創(chuàng)建一個session的時(shí)候,服務(wù)器首先檢查這個客戶端里的請求里是否已包含了一個session標(biāo)識--sessionID,如果已經(jīng)包含一個sessionID,則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務(wù)器就按照sessionID把這個session檢索出來使用(檢索不到,可能會新建一個),如果客戶端請求不包含sessionID,則為此客戶端創(chuàng)建一個session并且聲稱一個與此session相關(guān)聯(lián)的sessionID,sessionID的值應(yīng)該是一個既不會重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個sessionID將被在本次響應(yīng)中返回給客戶端保存。

保存sessionID的方式

1,使用cookie:一般這個cookie的名字都是類似于XSESSIONID

? ? ? 如:JSESSIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 ---名字就是JSESSIONID

2,URL重寫:因?yàn)閏ookie可以被人為禁止,所以為了保證sessionID能夠被傳遞給服務(wù)器,使用URL重寫也是一種解決方法。

如:

http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

兩種寫法都行。

session、cookie的區(qū)別

1,cookie數(shù)據(jù)存放在客戶的瀏覽器(本地),session數(shù)據(jù)放在服務(wù)器上;

2,cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session;

3,session會在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie;

4,單個cookie保存的數(shù)據(jù)不能超過4k,很多瀏覽器都限制一個站點(diǎn)最多保存20個cookie;

5,可以將的呢輪轂信息等重要信息存放為session。


--------------------------------------------------------------------------------------------------------------------

技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始,找個師兄,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷茫”。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長可見化,師兄1對1免費(fèi)指導(dǎo)。快來與我一起學(xué)習(xí)吧~ 點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/10014595

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,285評論 2 376

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