(干货满满!)session和cookie作用原理,区别(史上最详细)
一、Cookie概念
在瀏覽某些 網(wǎng)站 時,這些網(wǎng)站會把 一些數(shù)據(jù)存在 客戶端 , 用于使用網(wǎng)站 等跟蹤用戶,實現(xiàn)用戶自定義 功能.
是否設置過期時間:
-
如果不設置 過期時間,則表示這個 Cookie生命周期為 瀏覽器會話期間 , 只要關(guān)閉瀏覽器,cookie就消失了.
-
這個生命期為瀏覽會話期的cookie,就是會話Cookie;
存儲:
-
一般保存在 內(nèi)存,不在硬盤;
-
如果設置了過期時間, 瀏覽器會把cookie保存在硬盤上,關(guān)閉再打開瀏覽器, 這些cookie 依然有效直到 超過的設置過期時間;
-
存儲在硬盤上的Cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。
原理:
如果瀏覽器使用的是 cookie,那么所有的數(shù)據(jù)都保存在瀏覽器端,
比如你登錄以后,服務器設置了 cookie用戶名(username),那么,當你再次請求服務器的時候,瀏覽器會將username一塊發(fā)送給服務器,這些變量有一定的特殊標記。服務器會解釋為 cookie變量。
所以只要不關(guān)閉瀏覽器,那么 cookie變量便一直是有效的,所以能夠保證長時間不掉線。
如果設置了的有效時間,那么它會將 cookie保存在客戶端的硬盤上,下次再訪問該網(wǎng)站的時候,瀏覽器先檢查有沒有 cookie,如果有的話,就讀取該 cookie,然后發(fā)送給服務器。
二、Session的概念
Session 是存放在服務器端的類似于HashTable結(jié)構(gòu)(每一種web開發(fā)技術(shù)的實現(xiàn)可能不一樣,下文直接稱之為HashTable)來存放用戶數(shù)據(jù);
作用:實現(xiàn)網(wǎng)頁之間數(shù)據(jù)傳遞,是一個存儲在服務器端的對象集合。
原理:系統(tǒng)在創(chuàng)建Session時將為其分配一個長長的字符串標識,以實現(xiàn)對Session進行管理與跟蹤。
session機制是一種服務器端的機制,服務器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。
是否已經(jīng)創(chuàng)建過session:
當程序需要為某個客戶端的請求創(chuàng)建一個session時,服務器首先檢查這個客戶端的請求里是否已包含了一個session標識(稱為session id),
如果已包含則說明以前已經(jīng)為此客戶端創(chuàng)建過session,服務器就按照session id把這個session檢索出來…使用(檢索不到,會新建一個),
如果客戶端請求不包含session id,則為此客戶端創(chuàng)建一個session并且生成一個與此session相關(guān)聯(lián)的session id,
session id的值應該是一個既不會重復,又不容易被找到規(guī)律以仿造的字符串,這個session id將被在本次響應中返回給客戶端保存。
(總結(jié): 創(chuàng)建一個session時,服務器看這個客戶端 是否包含session標識, 是的話按照session id把session檢索出來,否則就得 新建一個.)
Session ID的保存方法:
使用Cookie來保存,這是最常見的方法。
服務器通過設置Cookie的方式將Session ID發(fā)送到瀏覽器。
如果我們不設置這個過期時間,那么這個Cookie將不存放在硬盤上,當瀏覽器關(guān)閉的時候,Cookie就消失了,這個Session ID就丟失了。
如果我們設置這個時間為若干天之后,那么這個Cookie會保存在客戶端硬盤中,即使瀏覽器關(guān)閉,這個值仍然存在,下次訪問相應網(wǎng)站時,同 樣會發(fā)送到服務器上。
cookie 和session 的區(qū)別:
cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務器上.
?
簡單的說,當你登錄一個網(wǎng)站的時候,如果web服務器端使用的是session,那么所有的數(shù)據(jù)都保存在服務器上面,
?
客戶端每次請求服務器的時候會發(fā)送 當前會話的session_id,服務器根據(jù)當前session_id判斷相應的用戶數(shù)據(jù)標志,以確定用戶是否登錄,或具有某種權(quán)限。
?
session_id是服務 器和客戶端鏈接時候隨機分配的,使用Cookie保存
cookie不是很安全
session會在一定時間內(nèi)保存在服務器上。當訪問增多,會比較占用你服務器的性能,此時應考慮反序列化——>傳送門
總結(jié)
以上是生活随笔為你收集整理的(干货满满!)session和cookie作用原理,区别(史上最详细)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【图示,简单明了】HttpServlet
- 下一篇: 【已解决】报错:cannot be re