APP開發實戰38-Cookie介紹
10 Cookie介紹
10.1Cookie簡介
HTTP是一種無狀態性的協議。這是因為此種協議不要求瀏覽器在每次請求中標明它自己的身份,並且瀏覽器以及伺服器之間並沒有保持一個永續性的連線用於多個頁面之間的訪問。
當用戶訪問http://example.com這個域名的時候,瀏覽器就會自動和伺服器建立TCP/IP連線,然後傳送HTTP請求到example.com的伺服器的80埠。該個請求的語法如下所示:
GET/ HTTP/1.1
Host:example.org
在這個請求例子中,沒有任何資訊可以唯一標識當前這個發出請求的客戶端。保持應用程式狀態的第一步就是要知道如何來唯一地標識每個客戶端。因為只有在HTTP中請求中攜帶的資訊才能用來標識客戶端,所以在請求中必須包含某種可以用來標識客戶端唯一身份的資訊。
Cookie是作為HTTP一個擴充套件誕生的,其主要用途是彌補HTTP的無狀態特性,提供了一種保持客戶端與伺服器端之間狀態的途徑,Cookie機制採用的是在客戶端保持狀態的方案。
有兩個HTTP頭部是專門負責設定以及傳送Cookie的,它們分別是Set-Cookie以及Cookie。當伺服器返回給客戶端一個http響應資訊時,其中如果包含Set-Cookie這個頭部時,意思就是指示客戶端建立一個cookie,並且在後續的HTTP請求中自動傳送這個Cookie到伺服器端,直到這個cookie過期。如果Cookie的生存時間是整個會話期間的話,那麼客戶端會將cookie儲存在記憶體中,客戶端關閉時就會自動清除這個Cookie。另外一種情況就是儲存在客戶端的硬碟中,客戶端關閉的話,該Cookie也不會被清除,下次開啟客戶端訪問對應網站時,這個Cookie就會自動再次傳送到伺服器端。
Cookie有一個Expires(有效期)屬性,這個屬性決定了Cookie在客戶端的儲存時間,伺服器可以通過設定Expires欄位的數值,來改變Cookie的儲存時間。
通常情況下,Cookie包含Server、Expires、Name、value這幾個欄位,其中對伺服器有用的只是Name和value欄位,Expires等欄位的內容僅僅是為了告訴客戶端如何處理這些Cookie。Cookie使用的名稱和值也可以由自己定義。
10.2Cookie的設定和傳送
一個Cookie的設定以及傳送過程分為以下四步:
客戶端傳送一個HTTP請求到伺服器端
伺服器端傳送一個HTTP響應到客戶端,其中包含Set-Cookie頭部
客戶端傳送一個HTTP請求到伺服器端,其中包含Cookie頭部
伺服器端傳送一個HTTP響應到客戶端
如下圖所示:
在客戶端的第二次請求中包含的Cookie頭部中,提供給了伺服器端可以用來唯一標識客戶端身份的資訊。這時,伺服器端也就可以判斷客戶端是否啟用了Cookie。