在軟體測試種,我們經常會接觸到cookie與session,但是很多人都會傻傻分不清。所以通過這篇文章給大家詳細介紹下cookie與session。

cookie與session都是一種會話處理機制,那麼什麼時會話呢,一次會話指的是:就好比打電話,A給B打電話,接通之後,會話開始,直到掛斷電話,該次會話就結束了,而瀏覽器訪問伺服器,就跟打電話一樣,瀏覽器A給伺服器發送請求,訪問web程序,該次會話就已經接通,其中不管瀏覽器發送多少請求(就相當於接通電話後說話一樣),都視為一次會話,直到瀏覽器關閉,本次會話結束。其中注意,一個瀏覽器就相當於一部電話,如果使用火狐瀏覽器,訪問伺服器,就是一次會話了,然後打開google瀏覽器,訪問伺服器,這是另一個會話,雖然是在同一台電腦,同一個用戶在訪問,但是,這是兩次不同的會話。

現在我們知道了什麼是會話,那麼怎樣去維持會話呢,因為我們的Web應用程序是使用HTTP協議傳輸數據的,而HTTP協議有一個特點,就是HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與伺服器端的連接就會關閉,再次交換數據需要建立新的連接,這就意味著伺服器無法從連接上跟蹤會話,即用戶A購買了一件商品放入購物車內,當再次購買商品時伺服器已經無法判斷該購買行為是屬於用戶A。因而引入了跟蹤會話的機制cookie與session。

什麼是cookie?

Cookie實際上是一小段的文本信息。客戶端請求伺服器,如果伺服器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給伺服器。伺服器檢查該Cookie,以此來辨認用戶狀態。伺服器還可以根據需要修改Cookie的內容。

什麼是Session

Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在伺服器上。客戶端瀏覽器訪問伺服器的時候,伺服器會創建一個session,把客戶端信息以某種形式記錄在伺服器上,並且同時生成一個sessionid。大部分session機制都使用會話cookie來保存session id,再次訪問伺服器時,http請求種會帶上sessionid,伺服器根據session_id來檢查伺服器上跟該session_id對應的客戶信息來確認客戶身份。Session相當於程序在伺服器上建立的一份客戶檔案,客戶來訪的時候只需要查詢客戶檔案表就可以了。

Cookie與Session的通俗理解

如一個咖啡店有喝5杯咖啡免費贈一杯咖啡的優惠,然而一次性消費5杯咖啡的機會微乎其微,這時就需要某種方式來紀錄某位顧客的消費數量。以下兩種方案:

 1、發給顧客一張卡片,上面記錄著消費的數量,一般還有個有效期限。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以後的消費相聯繫起來。這種做法就是在客戶端保持狀態。也就是cookie。 顧客就相當於瀏覽器。   

2、發給顧客一張會員卡,除了卡號之外什麼信息也不紀錄,每次消費時,如果顧客出示該卡片,則店員在店裡的紀錄本上找到這個卡號對應的紀錄添加一些消費信息。這種做法就是在伺服器端保持狀態。也就是Session機制。

推薦閱讀:

相关文章