cookie和session的由來:
cookie
1.cookie企垦,因?yàn)閔ttp是無狀態(tài)協(xié)議,意思是說當(dāng)你瀏覽一個(gè)頁面晒来,然后轉(zhuǎn)到同一個(gè)網(wǎng)站的另一個(gè)頁面钞诡,服務(wù)器是無法認(rèn)識(shí)到的,每一次的訪問都是沒有任何關(guān)系的湃崩。這就容易引起混亂荧降,比如上一次我登陸了,下一次訪問攒读,又讓我登錄朵诫,很煩。
2.cookie的想法是薄扁,當(dāng)訪問一個(gè)頁面的時(shí)候剪返,服務(wù)器在http報(bào)文中,命令瀏覽器存儲(chǔ)一個(gè)字符串邓梅;瀏覽器在訪問同一個(gè)域的時(shí)候脱盲,會(huì)把這個(gè)字符串?dāng)y帶在http請(qǐng)求中;
第一次訪問一個(gè)服務(wù)器日缨,不可能攜帶cookie钱反。必須是服務(wù)器得到這次請(qǐng)求,在下行響應(yīng)報(bào)頭中,攜帶cookie信息面哥,此后每一次瀏覽器往這個(gè)服務(wù)器發(fā)出的請(qǐng)求哎壳,都會(huì)攜帶這個(gè)cookie。
特點(diǎn)
● cookie是不加密的尚卫,用戶可以自由看到归榕;
session
1.session依賴cookie,當(dāng)一個(gè)瀏覽器禁用cookie的時(shí)候,登錄效果消失鞠值; 或者用戶清除了cookie,登陸也消失。
session比cookie不一樣在哪里呢锹杈? session下發(fā)的是亂碼,并且服務(wù)器自己緩存一些東西撕瞧,下次瀏覽器的請(qǐng)求帶著亂碼上來尤蛮,此時(shí)與緩存進(jìn)行比較,看看是誰风科。
所以撒轮,一個(gè)亂碼,可以對(duì)應(yīng)無限大的數(shù)據(jù)贼穆。
任何語言中题山,session的使用,是“機(jī)理透明”的故痊。他是幫你設(shè)置cookie的顶瞳,但是足夠方便,讓你感覺不到這事兒和cookie有關(guān)愕秫。
session是什么
session 是一種標(biāo)識(shí)對(duì)話的技術(shù)說法慨菱。通過 session ,我們能快速識(shí)別用戶的信息戴甩,針對(duì)用戶提供不一樣的信息符喝。
session 的技術(shù)實(shí)現(xiàn)上:會(huì)對(duì)一次對(duì)話產(chǎn)生一個(gè)唯一的標(biāo)識(shí)進(jìn)行標(biāo)識(shí)。
session 生命周期
session 標(biāo)識(shí)產(chǎn)生的時(shí)機(jī)和清除時(shí)機(jī):
session 特點(diǎn)
每次對(duì)話甜孤, session 的 id 是不一樣的协饲。
session id 需要每次請(qǐng)求都由客戶端帶過來,用來標(biāo)識(shí)本次會(huì)話缴川。這樣就要求客戶端有能用保存的 sesssionId茉稠。
從 session 開始到清除,我們叫一次會(huì)話二跋,也就是生成 session战惊。
session 技術(shù)方案
當(dāng)前業(yè)界通用的方案是:cookie 。當(dāng)然還有無 cookie 的方案,對(duì)每個(gè)鏈接都加上 sessionId 參數(shù)吞获。
session 使用流程
用戶登錄后况凉,將 sessionId 存到 cookie 中。
用戶在請(qǐng)求的網(wǎng)站別的服務(wù)時(shí)各拷,由瀏覽器請(qǐng)求帶上 cookie刁绒,發(fā)送到服務(wù)器。
服務(wù)器拿到 sessionId 后烤黍,通過該 Id 找到保存到在服務(wù)器的用戶信息知市。
然后再跟據(jù)用戶信息,進(jìn)行相應(yīng)的處理速蕊。
瀏覽器的緩存機(jī)制提供了可以將用戶數(shù)據(jù)存儲(chǔ)在客戶端上的方式嫂丙,可以利用cookie,session和服務(wù)端進(jìn)行數(shù)據(jù)交互
session和cookie的區(qū)別
cookie | session | |
---|---|---|
保持狀態(tài) | 保存在瀏覽器 | 保存在服務(wù)器端 |
使用方式 | 當(dāng)用戶在某個(gè)網(wǎng)站注冊(cè)后规哲,就會(huì)收到一個(gè)惟一用戶ID的cookie跟啤。客戶后來重新連接時(shí)唉锌,這個(gè)用戶ID會(huì)自動(dòng)返回隅肥,服務(wù)器對(duì)它進(jìn)行檢查,確定它是否為注冊(cè)用戶且選擇了自動(dòng)登錄袄简,從而使用戶無需給出明確的用戶名和密碼腥放,就可以訪問服務(wù)器上的資源。 | a.當(dāng)服務(wù)器收到請(qǐng)求需要?jiǎng)?chuàng)建session對(duì)象時(shí)绿语,首先會(huì)檢查客戶端請(qǐng)求中是否包含sessionid秃症。b.如果有sessionid,服務(wù)器將根據(jù)該id返回對(duì)應(yīng)session對(duì)象汞舱。如果客戶端請(qǐng)求中沒有sessionid伍纫,服務(wù)器會(huì)創(chuàng)建新的session對(duì)象,并把sessionid在本次響應(yīng)中返回給客戶端昂芜。c.通常使用cookie方式存儲(chǔ)sessionid到客戶端莹规,在交互中瀏覽器按照規(guī)則將sessionid發(fā)送給服務(wù)器。如果用戶禁用cookie泌神,則要使用URL重寫良漱,可以通過response.encodeURL(url) 進(jìn)行實(shí)現(xiàn); |
生命周期 | a.如果不在瀏覽器中設(shè)置過期時(shí)間欢际,cookie被保存在內(nèi)存中母市,生命周期隨瀏覽器的關(guān)閉而結(jié)束,這種cookie簡稱會(huì)話cookie损趋。b.如果在瀏覽器中設(shè)置了cookie的過期時(shí)間患久,cookie被保存在硬盤中,關(guān)閉瀏覽器后,cookie數(shù)據(jù)仍然存在蒋失,直到過期時(shí)間結(jié)束才消失返帕。 | 1.用戶已經(jīng)登錄:這個(gè)唯一標(biāo)識(shí)會(huì)在用戶登錄時(shí)產(chǎn)生,用戶點(diǎn)擊退出時(shí)或者關(guān)閉瀏覽器時(shí)清除篙挽。2.用戶未登錄: 這個(gè)唯一標(biāo)識(shí)會(huì)用用戶進(jìn)入網(wǎng)站時(shí)產(chǎn)生荆萤,用戶關(guān)閉所有網(wǎng)站相關(guān)頁面時(shí)清除。3.session 生命周期: 在生成和清除之間铣卡,在網(wǎng)站內(nèi)的頁面任意跳轉(zhuǎn)链韭,session 標(biāo)識(shí)不會(huì)發(fā)生變化。 |
摘自:http://www.cnblogs.com/envenler/archive/2011/06/16/2082387.html
http://www.reibang.com/p/310d307e44c6