cookie與session的區(qū)別

大家好,我是IT修真院北京分院第二十六期的學(xué)員李寧虎,一枚正直純潔善良的JAVA程序員 今天給大家分享一下,什么是cookie,什么是session,分別用作什么場(chǎng)景

一、背景介紹

為什么要使用cookie和session? 很多時(shí)候客戶端和服務(wù)器進(jìn)行交互使用了HTTP協(xié)議,但是HTTP協(xié)議是無(wú)狀態(tài)的;HTTP協(xié)議的請(qǐng)求過(guò)程,是基于 TCP/IP 的,當(dāng)客戶端請(qǐng)求服務(wù)器,服務(wù)器處理后,進(jìn)行響應(yīng),該過(guò)程是無(wú)狀態(tài)的。

但是在有些時(shí)候是需要保存一些客戶端的請(qǐng)求信息,識(shí)別客戶端的某些狀態(tài),智能的、有針對(duì)性的去分析某些客戶端的習(xí)慣。這些時(shí)候,就需要去記錄客戶端的連接狀態(tài),識(shí)別請(qǐng)求的狀態(tài)等。所以為了解決類似的事情,就需要使用到了 Cookie 和 Session。

比如,使用Cookie的場(chǎng)景:有些網(wǎng)站有記住用戶名的功能,當(dāng)你勾這個(gè)的時(shí)候,下次進(jìn)入該網(wǎng)站時(shí),就會(huì)保存上一次登錄的用戶名;使用Seesion的場(chǎng)景:利用Seesion來(lái)驗(yàn)證用戶是否已登錄,利用Session來(lái)保存驗(yàn)證碼。

二、知識(shí)剖析

Cookie:在客戶端訪問(wèn)某個(gè)地址時(shí),會(huì)將請(qǐng)求交到服務(wù)器進(jìn)行處理,在發(fā)送請(qǐng)求的時(shí)候,瀏覽器會(huì)將頁(yè)面的頭部信息一并的交到服務(wù)器端進(jìn)行處理。在處理的過(guò)程中,Cookie 在服務(wù)器端生成 ,在此同時(shí),可以將一些需要保存的信息,存放到此 Cookie 中。生成 Cookie 對(duì)象時(shí),需要確定具體的名稱及具體的值,可以設(shè)置當(dāng)前 Cookie 的過(guò)期時(shí)間,設(shè)置過(guò)期時(shí)間后,就相當(dāng)于持久化了 Cookie 中的數(shù)據(jù),此時(shí)的 Cookie 會(huì)以之前的 Cookie 名稱,保存在客戶端。

如果不設(shè)置過(guò)期時(shí)間,則當(dāng)前 Cookie 的生命期是瀏覽器會(huì)話期間,一旦關(guān)閉了該瀏覽器,當(dāng)前的Cookie 就會(huì)不存在了,此時(shí)的 Cookie 信息是保存在內(nèi)存中。在服務(wù)器端,處理完后,會(huì)將生成的 Cookie ,隨著 Http 響應(yīng),會(huì)在 Http 響應(yīng)頭中,加上Cookie 信息,瀏覽器接受到響應(yīng)后,會(huì)按照 Http 響應(yīng)頭里的 Cookie ,在客戶端建立 Cookie 。在下次客戶進(jìn)行請(qǐng)求的時(shí)候,Http 會(huì)附帶著已經(jīng)存儲(chǔ)過(guò)的 Cookie,一并發(fā)送到服務(wù)器。一個(gè)域,在客戶端建立的所以 Cookie 都是可以共享的,只要 Cookie 沒(méi)有過(guò)期。

Session:Session 是在服務(wù)器端生成的,存儲(chǔ)在服務(wù)器端,即存在內(nèi)存中。可以對(duì)生成的 Session 設(shè)置過(guò)期時(shí)間,如果不設(shè)置過(guò)期時(shí)間,默認(rèn)的 Session 過(guò)期時(shí)間是30 分鐘(在不同的服務(wù)器中,它的過(guò)期時(shí)間略有不同,本文是以 Tomcat 來(lái)說(shuō)的) 但是,Sesssion 的生成的同時(shí),會(huì)生成一個(gè)與之相關(guān)聯(lián)的的 SessionID ,此 SessionID的存儲(chǔ)是需要 Cookie 來(lái)完成的。 SessionID 是以名稱為 JSESSIONID,其值應(yīng)該是一個(gè)既不會(huì)重復(fù),又不容易被找到規(guī)律以仿造的字符串。SessionID會(huì)隨著此次 Http 響應(yīng),一并返回到客戶端,并保存在客戶端中。到當(dāng)前請(qǐng)求再次發(fā)出后,該 SessionID會(huì)隨著 Http 頭部,傳到服務(wù)器中,服務(wù)器依據(jù)當(dāng)前 SessionID 得到與之對(duì)應(yīng)的 Session.

三、常見(jiàn)問(wèn)題

有的網(wǎng)站禁用cookie之后,session不能用。

四、解決方案

如果客戶端禁用了 Cookie 的話,很多網(wǎng)站任然可以存儲(chǔ)用戶的信息。一種處理的方式是URL 重寫,將 SesseionID 直接附加在請(qǐng)求地址的后面。另一種處理的方式是,使用隱藏自動(dòng)的方式。就是服務(wù)器自動(dòng)的在表單中,添加一個(gè)隱藏字段,以便在表單提交時(shí),將 SesseionID 一起傳到服務(wù)器,進(jìn)行識(shí)別。

五、編碼實(shí)戰(zhàn)

視頻

PPT

六、拓展思考

session與cookie的區(qū)別,與使用場(chǎng)景

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

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

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

4、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。

5、可以考慮將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。

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

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

這里是技能樹.IT修真院,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化,師兄1對(duì)1免費(fèi)指導(dǎo)??靵?lái)與我一起學(xué)習(xí)吧 !

師兄帶你入門!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文分別對(duì)Cookie與Session做一個(gè)介紹和總結(jié),并分別對(duì)兩個(gè)知識(shí)點(diǎn)進(jìn)行對(duì)比分析,讓大家對(duì)Cookie和Se...
    舍末逐本閱讀 390評(píng)論 0 0
  • 本文分別對(duì)Cookie與Session做一個(gè)介紹和總結(jié),并分別對(duì)兩個(gè)知識(shí)點(diǎn)進(jìn)行對(duì)比分析,讓大家對(duì)Cookie和Se...
    HyacinthC閱讀 242評(píng)論 0 2
  • 本文分別對(duì)Cookie與Session做一個(gè)介紹和總結(jié),并分別對(duì)兩個(gè)知識(shí)點(diǎn)進(jìn)行對(duì)比分析,讓大家對(duì)Cookie和Se...
    __越過(guò)山丘__閱讀 305評(píng)論 0 0
  • 針對(duì)會(huì)話機(jī)制,本文分別對(duì)Cookie與Session做一個(gè)介紹和總結(jié),并分別對(duì)兩個(gè)知識(shí)點(diǎn)進(jìn)行對(duì)比分析。 Cooki...
    一W句代碼閱讀 3,307評(píng)論 7 9
  • 某天,lisa同學(xué)說(shuō),我加入好報(bào)寫作的群了,怎么沒(méi)看到你?。课液苊H?,什么什么啊?然后lisa同學(xué)巴拉巴拉的說(shuō)了前...
    閑過(guò)閱讀 340評(píng)論 0 1

友情鏈接更多精彩內(nèi)容