COOKIE和Session的原理及異同

2022-08-21 14:48:08 字數 2573 閱讀 7052

cookie是客戶端技術,伺服器把每個使用者的資料以cookie的形式寫給使用者各自的瀏覽器。當使用者使用瀏覽器再去訪問伺服器中的web資源時,就會帶著各自的資料去,這樣,web資源處理的就是使用者各自的資料。

伺服器在客戶端儲存使用者的資訊,比如,登入名,密碼等,資料量不大,伺服器在需要的時候可以從客戶端讀取,儲存在客戶端的瀏覽器快取目錄下。換一台電腦的瀏覽器就不能讀到了,但如果不同瀏覽器的cookie檔案存放目錄是一樣的話,使用同乙個電腦的不同瀏覽器仍然可以讀到,因為此時瀏覽器間的cookie是共享的。

使用者使用瀏覽器訪問乙個伺服器,伺服器端就可以建立乙個cookie,並且設定它的生命週期,通過response將cookie返回給瀏覽器。

瀏覽器會在本地產生臨時檔案,這個檔案中存放的就是cookie內容,使用的是明文(可以加密後儲存),所以比較危險,這個臨時檔案是有存在時間限制。如果cookie重名的話,就會替換掉以前的值。乙個站點可以建立多個cookie。

建立cookie:

瀏覽器向某個伺服器傳送請求的時候,會攜帶跟這個伺服器相關的cookie資訊,存在request中,所以伺服器可以通過解析request中的內容來獲取cookie資訊。由於不能通過鍵值對的鍵來直接讀取,讀出來的cookie是個陣列,先讀取所有資訊,再選出需要的資訊。

讀取cookie:

儲存上次登入時間等資訊

儲存使用者名稱、密碼,在一定時間內不用重新登入

記錄使用者訪問**的喜好(比如有誤背景**,網頁的背景色等)

**的個性化,比如定製**的服務,內容等

1、session是儲存在伺服器端,理論上是沒有是沒有限制,只要你的記憶體夠大

2、瀏覽器第一次訪問伺服器時會建立乙個session物件並返回乙個jsessionid=id的值,

建立乙個cookie物件key為jssionid,value為id的值,將這個cookie寫回瀏覽器

3、瀏覽器在第二次訪問伺服器的時候攜帶cookie資訊jsessionid=id的值,如果該jsessionid的session已經銷毀,

那麼會重新建立乙個新的session再返回乙個新的jsessionid通過cookie返回到瀏覽器

4、針對乙個web專案,乙個瀏覽器是共享乙個session,就算有兩個web專案部署在同乙個伺服器上,針對兩個專案的session是不同的

如:你在tomcat上同時部署了兩個web專案,分別是web1、web2。當你在乙個瀏覽器上同時訪問web1時建立的session是a1,訪問web2時建立的session是a2。

後面你再多次訪問web1使用的session還是a1,多次訪問web2時使用session就是a2

5、session是基於cookie技術實現,重啟瀏覽器後再次訪問原有的連線依然會建立乙個新的session,

因為cookie在關閉瀏覽器後就會消失,但是原來伺服器的session還在,只有等到了銷毀的時間會自動銷毀

6、如果瀏覽器端禁用了cookie,那麼每次訪問都會建立乙個新的session,但是我們可以通過伺服器端程式重寫url即可,如果頁面多連線多,會增加不必要的工作量,

那可以強制讓你使用者開啟接收cookie後再讓其訪問即可。

當你一次訪問伺服器的時候,伺服器會在記憶體中開闢一塊空間,返回唯一一把開啟該空間的鑰匙,再把這把鑰匙返回到瀏覽器。

當你第二次訪問的時候瀏覽器會攜帶這把鑰匙到伺服器端開啟對應的空間,如果該空間已經銷毀又重新返回開闢一塊新的空間返回新的鑰匙到瀏覽器。

1、cookie和session都是會話技術,cookie是執行在客戶端,session是執行在伺服器端

2、cookie有安全隱患,通過攔截或本地檔案找得到你的cookie後可以進行攻擊。

3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能

考慮到減輕伺服器效能方面,應當使用cookie。

4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。session是沒有大小限制和伺服器的記憶體大小有關。

session是通過cookie來工作的

session和cookie之間是通過$_cookie['phpsessid']來聯絡的,通過$_cookie['phpsessid']可以知道session的id,從而獲取到其他的資訊。

關於同乙個瀏覽器訪問乙個**,前後登入兩個人的賬號,會發現,用的是乙個session容器,不過sessionid這個屬性會被覆蓋,所以乙個瀏覽器同一段時間只會存在乙個的賬號,不可能並行進行兩個人的賬號。而如果採用不同的瀏覽器登入兩個人賬號,那麼將各自分配乙個sessionid,前者乙個瀏覽器登兩個賬號可理解成前乙個賬號的sessionid就被殺死了,或者說值被覆蓋了。每個賬號在登入**時,會分配sessionid,與userid會相對應,並且儲存到伺服器的資料庫中,接下來每個sessionid在訪問伺服器的時候,就會去查詢相應的表,顯示相對應的使用者資訊。

所以cookie和session最大的區別是,客戶端技術和伺服器端技術,資料存放的位置不一樣,技術原理不同,可實現的功能側重點也不同。

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...

cookie和session的區別

分類 計算機網路 2011 10 21 10 43 4785人閱讀收藏 舉報 session 瀏覽器伺服器 servlet url儲存 一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我...