首頁  >  文章  >  Java  >  簡述cookie與session的區別

簡述cookie與session的區別

巴扎黑
巴扎黑原創
2017-07-20 13:13:253156瀏覽

首先來說一下什麼是cookie:cookie是Web伺服器保存在客戶端的一系列文字資訊;

cookie的作用大致有三點:對特定物件的追踪,統計網頁瀏覽次數,簡化登陸。

它的安全性能是比較差的,容易洩漏資訊。

其次說一下什麼是會話:一個會話就是瀏覽器與伺服器之間的一次通話,包含瀏覽器與伺服器之間的多次要求、回應的過程。

為什麼說到會話呢?

因為session物件就是用來儲存所有有關使用者會話的資訊的。

session是jsp內建對象,與瀏覽器一一對應,讓使用者儲存和擷取會話狀態的資訊。

對比兩者,有以下幾點不同:

#1.作用位置:cookie是在客戶端保存用戶訊息,session實在伺服器端儲存使用者資訊;

#2.儲存內容:cookie儲存的是字串,session中儲存的是物件;

3.作用時間:cookie可以長期儲存在客戶端,session隨會話結束而關閉;

4.一般cookie保存不重要的使用者訊息,重要的訊息由session保存。

5. 由於HTTP協定是無狀態的協議,所以當服務端需要記錄用戶的狀態時,就需要用某種機制來識具體的用戶,這個機制就是Session.典型的場景例如購物車,當你點擊下單按鈕時,由於HTTP協議無狀態,所以並不知道是哪個用戶操作的,所以服務端要為特定的用戶創建了特定的Session,用用於標識這個用戶,並且追蹤用戶,這樣才知道購物車裡面有幾本書。這個Session是保存在服務端的,有一個唯一識別。在服務端保存Session的方法很多,記憶體、資料庫、檔案都有。集群的時候也要考慮Session的轉移,在大型的網站,一般會有專門的Session伺服器集群,用來保存用戶會話,這個時候Session 資訊都是放在內存的,使用一些緩存服務比如Memcached之類的來放Session。
6.思考一下服務端如何辨識特定的客戶?這時候Cookie就登場了。每次HTTP請求的時候,客戶端都會傳送對應的Cookie訊息到服務端。實際上大多數的應用程式都是用Cookie 來實作Session追蹤的,第一次建立Session的時候,服務端會在HTTP協定中告訴客戶端,需要在Cookie 裡面記錄一個Session ID,以後每次要求把這個會話ID傳送到伺服器,我就知道你是誰了。有人問,如果客戶端的瀏覽器停用了 Cookie 怎麼辦?一般這種情況下,會使用一種叫做URL重寫的技術來進行會話跟踪,即每次HTTP交互,URL後面都會被附加上一個諸如 sid=xxxxx 這樣的參數,服務端據此來識別用戶。
7. Cookie其實還可以用在一些方便使用者的場景下,設想你某次登陸過一個網站,下次登入的時候不想再輸入帳號了,怎麼辦?這個資訊可以寫到Cookie裡面,造訪網站的時候,網站頁面的腳本可以讀取這個訊息,就自動幫你把用戶名給填了,能夠方便一下用戶。這也是Cookie名稱的由來,給使用者的一點甜頭。
所以,總結一下:
Session是在服務端保存的資料結構,用來追蹤使用者的狀態,這個資料可以保存在叢集、資料庫、檔案中;
Cookie是客戶端保存用戶資訊的一種機制,用來記錄使用者的一些訊息,也是實現Session的一種方式。



#

以上是簡述cookie與session的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn