Cookie與Session的歷史、原理、結構、分類、應用以及區別

Cookie部分

Cookie的歷史與原理

Cookie(即“小甜餅”)是一種用於在Web瀏覽器和Web服務器之間傳遞信息的技術。Cookie最早由美國的李維·蒙塔利(Lou Montulli)於1994年發明,它是通過在HTTP響應中添加一個Set-Cookie字段來設置的。當瀏覽器收到此響應時,它將存儲這個Cookie,並在後續的HTTP請求中將其發送回服務器。

Cookie的原理非常簡單:當用戶訪問一個網站時,服務器會將一個Cookie發送給用戶的瀏覽器。瀏覽器會將這個Cookie存儲在本地,並在用戶下一次訪問該網站時將其發送回服務器。通過這種方式,服務器可以記住用戶的偏好、登錄狀態等信息。

Cookie的分類與結構

按照用途,Cookie可以分爲 會話Cookie持久Cookie。會話Cookie通常保存在內存中,當用戶關閉瀏覽器時就會被刪除。而持久Cookie則會保存在硬盤上,直到過期時間到達或用戶手動刪除纔會被刪除。

每個Cookie都由一個名字、一個值、一些元數據(如過期時間、域名、路徑等)組成。例如,下面是一個名爲“username”的Cookie:

Set-Cookie: username=john; expires=Tue, 11 Jun 2019 00:00:00 GMT; domain=example.com; path=/

這個Cookie的值爲“john”,過期時間爲2019年6月11日,域名爲example.com,路徑爲根目錄。

Cookie的應用

Cookie是Web開發中非常重要的一個概念,它可以用於以下幾個方面:

  1. 記住用戶的登錄狀態:當用戶登錄後,服務器可以將一個持久Cookie發送給瀏覽器,包含用戶的登錄憑證。當用戶下一次訪問該網站時,瀏覽器會將這個Cookie發送回服務器,服務器可以通過這個Cookie來識別用戶並自動登錄。

  2. 存儲用戶的偏好:例如,網站可以保存用戶的語言偏好、主題偏好等信息,以便下一次訪問時能夠提供更好的用戶體驗。

  3. 跨域訪問:由於同源策略的限制,網站A無法直接讀取網站B的Cookie。但是,如果兩個網站共享同一個父域名,則可以通過設置Cookie的domain屬性來實現跨域訪問。

  4. 跟蹤用戶的行爲:通過設置Cookie,網站可以跟蹤用戶的訪問記錄、購買記錄等行爲,以便進行數據分析、廣告投放等。

參考文獻

HTTP Cookies - Mozilla Developer Network
Cookies - W3Schools
HTTP cookies - Wikipedia

PHP服務端設置以及客戶端的文件形式及內容

在PHP中,可以使用setcookie()函數來設置Cookie。例如,以下代碼會創建一個名爲“username”的Cookie,過期時間爲7天,值爲“john”:

setcookie('username', 'john', time() + 60 * 60 * 24 * 7, '/');

在客戶端,Cookie通常以文本文件的形式存儲在瀏覽器的Cookie目錄下。例如,在Google Chrome中,Cookie文件通常位於“C:\Users\AppData\Local\Google\Chrome\User Data\Default\Cookies”。

Cookie文件通常以SQLite數據庫的形式存儲,可以使用SQLite瀏覽器等工具來查看和編輯Cookie。

例如,以下是一個名爲“username”的Cookie的數據:

name: username
value: john
domain: example.com
path: /
expires_utc: 1559692800
is_secure: 0
is_httponly: 0

其中,expires_utc表示過期時間(以UNIX時間戳表示),is_secureis_httponly分別表示是否僅限HTTPS和是否禁止JavaScript訪問Cookie。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章