Java面試題:Session 和 Cookie的區別?

人人編程網 發佈 2022-10-21T17:13:33.800906+00:00

什麼是 session?在專業術語中,Session是指會話控制,是將會話數據保存在伺服器上一種機制。當客戶端訪問伺服器的時候,伺服器會把信息以某種形式記錄在伺服器上,恰恰和Cookie 相反(cookie 是將數據保存到客戶端)。

什麼是 Session?

在專業術語中,Session是指會話控制,是將會話數據保存在伺服器上一種機制。當客戶端訪問伺服器的時候,伺服器會把信息以某種形式記錄在伺服器上,恰恰和cookie 相反(cookie 是將數據保存到客戶端)。

當客戶端(瀏覽器)向伺服器發出請求的時候,伺服器會保存一個 session,並且返回一個唯一的 session id 給客戶端,客戶端將該 session id 保存到瀏覽器的 cookie 中,下次請求時自動將該 session id 傳遞給服務端,服務端根據 session id 找到用戶的 session 信息,認證用戶的身份權限等等。

簡單點說,session 就是服務端保存的用戶會話信息,一個 session id 對應一個 session,而這個 session 保存了用戶信息,如:用戶名、電話、郵箱、權限等等信息,session 可以保存內存中、Redis中、資料庫中等等。

什麼是 cookie?

Cookie 有時也用其複數形式 Cookies 表示。類型為「小型文本文件」,是某些網站為了辨別用戶身份,進行 Session 跟蹤(即存儲 session id)而儲存在用戶本地終端上的數據(通常經過加密),由用戶客戶端計算機暫時或永久保存的信息 。

瀏覽器中按 F12 ,選擇「應用」->「存儲」->「Cookie」,選擇對應的網址查看 Cookie 信息。如下圖:

上圖是筆者登錄百度後查看的 Cookie 信息。

session 和 cookie 的區別

存儲位置

session 數據存儲在伺服器端,cookie 數據存儲在瀏覽器,即客戶端。

存儲數據

session 能夠存儲任意的 Java 對象,cookie 則只能存儲字符串對象。

存儲大小

由於 session 是存儲到服務端的,理論上可以存無限大,但是由於考慮到性能問題,通常 session 不會存儲太多數據,避免造成占用大量內存(內存資源是很稀缺的)。而單個 cookie 保存的數據不能超過 4K,很多瀏覽器都限制一個站點最多保存 20 個 cookie。

安全性

由於 session 存儲在服務端,相對於 cookie 更安全。而 cookie 則是存儲在客戶端瀏覽器,更容易被人竊取。

關鍵字: