Cookie機(jī)制與Session(會(huì)話)的區(qū)別與聯(lián)系
在網(wǎng)站開發(fā)過程中,使用Cookie和Session技術(shù)是很常見的。這兩者各有優(yōu)點(diǎn)與缺點(diǎn),并不能說其中一個(gè)是最好的或不好的,而是要根據(jù)具體項(xiàng)目選擇適合的開發(fā)方式。 1. Cookie和Session在
在網(wǎng)站開發(fā)過程中,使用Cookie和Session技術(shù)是很常見的。這兩者各有優(yōu)點(diǎn)與缺點(diǎn),并不能說其中一個(gè)是最好的或不好的,而是要根據(jù)具體項(xiàng)目選擇適合的開發(fā)方式。
1. Cookie和Session在網(wǎng)站開發(fā)中的重要性
幾乎所有的動(dòng)態(tài)網(wǎng)站都離不開Session和Cookie技術(shù)。打開瀏覽器,您訪問過的網(wǎng)站都會(huì)存在Cookie。
2. 通信協(xié)議與數(shù)據(jù)傳輸
由于服務(wù)器和瀏覽器之間的對(duì)話是通過HTTP協(xié)議進(jìn)行的,它們之間的通信是一次請(qǐng)求和一次響應(yīng)的形式。當(dāng)?shù)诙卧L問時(shí),瀏覽器會(huì)將Cookie和Session ID帶回服務(wù)器,我們可以使用HttpServletRequest接收,并通過HttpServletResponse響應(yīng)。
3. 刷新頁面的請(qǐng)求處理
如果刷新頁面,瀏覽器將會(huì)重新向服務(wù)器發(fā)送請(qǐng)求并攜帶Cookie。服務(wù)器處理后再發(fā)送響應(yīng)給瀏覽器。這個(gè)過程涉及到服務(wù)器的重定向,即服務(wù)器收到請(qǐng)求后向?yàn)g覽器發(fā)送302狀態(tài)碼和重定向地址,瀏覽器處理后再次向服務(wù)器發(fā)送請(qǐng)求。這是一個(gè)兩次請(qǐng)求和兩次響應(yīng)的過程,而不是一次全部完成。
4. Session的作用和保存方式
為了讓服務(wù)器和瀏覽器知道瀏覽器在一段時(shí)間內(nèi)第幾次訪問服務(wù)器,需要將這個(gè)狀態(tài)保存下來,并向?yàn)g覽器發(fā)送一個(gè)Session ID。當(dāng)瀏覽器再次訪問服務(wù)器時(shí),會(huì)帶上這個(gè)Session ID,就像我們平時(shí)取票時(shí)通過身份證讓機(jī)器知道我們是誰。
Session可以保存內(nèi)容,并且保存在服務(wù)器端。如果服務(wù)器端不銷毀Session,Session會(huì)有一個(gè)有效期,一般約為半個(gè)小時(shí)左右。只有當(dāng)有效期過后,Session才會(huì)失效。
5. 對(duì)于敏感內(nèi)容的處理
對(duì)于一些敏感內(nèi)容,我們選擇將其保存在Session中,并將Session ID 發(fā)送到瀏覽器,通過瀏覽器的Session ID就可以讀取到保存在服務(wù)器端的Session內(nèi)容。
6. Cookie的作用和保存方式
Cookie保存在客戶端,通過服務(wù)器傳輸指定的Cookie內(nèi)容給瀏覽器。瀏覽器可以直接讀取Cookie,但經(jīng)過加密后可能呈現(xiàn)為一堆亂碼。
7. 瀏覽器再次訪問服務(wù)器
當(dāng)瀏覽器第二次訪問服務(wù)器時(shí),會(huì)攜帶這些Cookie內(nèi)容。服務(wù)器可以讀取并對(duì)其進(jìn)行處理加工。
8. Session和Cookie的關(guān)聯(lián)
雖然Session ID 通過Cookie傳輸?shù)綖g覽器,但存儲(chǔ)方式是Cookie。如果禁用Cookie,Session將失效。
9. 確保計(jì)算機(jī)安全
登錄某些網(wǎng)站時(shí),經(jīng)常會(huì)看到類似于“請(qǐng)確保您的計(jì)算機(jī)是否安全,在進(jìn)行登錄”等提示,或詢問是否保存密碼。這是因?yàn)榫W(wǎng)站可能會(huì)將我們的賬戶信息保存在Cookie中,因此需要確保瀏覽器端是否安全。如果在網(wǎng)吧等公共場(chǎng)所不安全,就不要勾選保存密碼,以免將個(gè)人信息保存到Cookie中。