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開發中非常重要的一個概念,它可以用於以下幾個方面:
-
記住用戶的登錄狀態:當用戶登錄後,服務器可以將一個持久Cookie發送給瀏覽器,包含用戶的登錄憑證。當用戶下一次訪問該網站時,瀏覽器會將這個Cookie發送回服務器,服務器可以通過這個Cookie來識別用戶並自動登錄。
-
存儲用戶的偏好:例如,網站可以保存用戶的語言偏好、主題偏好等信息,以便下一次訪問時能夠提供更好的用戶體驗。
-
跨域訪問:由於同源策略的限制,網站A無法直接讀取網站B的Cookie。但是,如果兩個網站共享同一個父域名,則可以通過設置Cookie的domain屬性來實現跨域訪問。
-
跟蹤用戶的行爲:通過設置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
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_secure
和is_httponly
分別表示是否僅限HTTPS和是否禁止JavaScript訪問Cookie。