這是網絡系列的第八篇文章,接下來會有更多精彩內容.敬請期待! 讓咱們一塊兒乘風破浪!瀏覽器
HTTP做爲一個無狀態的請求響應協議,幾乎沒有什麼信息用來判斷是哪一個客戶端,也沒法記錄用戶的訪問記錄。隨着業務增加,如今的服務器但願能記錄客戶端的信息,以便提供個性化服務(收集用戶數據)。今天一塊兒來了解下經常使用的客戶端識別方式:緩存
HTTP首部識別,是根據請求首部的相關信息來獲取客戶端信息。下面是經常使用的首部:bash
首部名稱 | 類型 | 描述 |
---|---|---|
From | 請求 | 用戶E-mail地址 |
User-Agent | 請求 | 用戶瀏覽器軟件 |
Referer | 請求 | 用戶是從這個連接跳轉過來的 |
Authorization | 請求 | 用戶名和密碼 |
Client-IP | 擴展請求 | 客戶端IP地址 |
X-Forwarded-For | 擴展請求 | 客戶端IP地址(詳情看這裏) |
Cookie | 擴展請求 | 服務器產生的ID標籤 |
From
首部記錄了每一個用戶的E-mail地址,理想狀況下,這個地址能夠做爲識別用戶的標誌。但爲了防止服務器收集該信息用於垃圾郵件的散發,不多瀏覽器會發送From首部。User-Agent
首部是用戶瀏覽器的相關信息,能夠用來制定和特定瀏覽器的交互動做,但它並不能用來識別特定的用戶信息。Referer
首部提供了用戶來源頁面的URL。只是標識了用戶以前訪問了哪一個頁面。IP地址
做爲用戶標識具備必定的前提條件:每一個用戶有着不一樣的IP,不多發生變化。但一般狀況下,IP地址描述的是一臺機器,而不是一個用戶;IP地址也會在用戶登陸服務商時動態獲取;服務器可能看到的是HTTP代理的IP地址(這種狀況下Client-IP和X-Forwarded-For首部保存了原始IP地址)。服務器
用戶登陸
,在用戶訪問須要受權才能訪問的網站時,服務器會要求其登陸。用戶在輸入用戶名和密碼後,瀏覽器能夠經過WWW-Authentication
首部將相關信息加密後發給服務器,這樣服務器就能夠標識當前用戶。固然,該方式帶來一個麻煩就是,用戶在訪問不一樣的網站時,須要屢次輸入不一樣的用戶名和密碼。cookie
有些服務器會爲每一個用戶生成特定版本的URL,來識別不一樣的用戶身份。一般,會對真正的URL進行擴展,在URL中添加狀態信息;這些包含了用戶信息的URL就稱爲胖URL。但該種方式也存在一些問題:網絡
和上面幾種識別用戶的方式相比,Cookie是最好的方式。dom
過時時間
。name = value
的鍵值列表,服務器對一無所知的用戶的HTTP響應中,使用Set-Cookie
或Set-Cookie2
首部設置。瀏覽器會記住首部的內容,未來在用戶返回同一站點時,會將對應的Cookie傳給服務器。客戶端側狀態
,規範的名稱爲HTTP狀態管理機制
。固然,不一樣的瀏覽器會以不一樣的方式進行存儲,但它們存儲的內容大體相同:
Cookie: name1=value1[; name2=value2][; name3=value3]...
複製代碼
響應頭中的大體格式爲:Set-Cookie: name=value[; name2=value2][; name3=value3]...
複製代碼
上面格式中提到的name包含如下選項:強制:NAME
可選:Expires、Domain、Path、Secure
複製代碼
Set-Cookie2: name=value[; name2=value2][; name3=value3]...
複製代碼
上面格式中提到的name包含如下選項:強制:
NAME,不能以$開頭
Version,cookie的版本。如`Set-Cookie2: Version="1"`
可選:
Comment,說明服務器準備如何使用該Cookie。用戶能夠經過檢查此策略來肯定是否容許使用帶有該Cookie的會話。必須採用utf-8編碼。
CommentURL,詳細描述Cookie策略及目的的文檔地址。
Discard,若提供該屬性,表示客戶端在退出時放棄該Cookie。
Domain,使用該Cookie的域名標識。
Max-Age,生存週期,單位秒。客戶端根據使用期計算規則進行計算。計算的值大於該值時,該Cookie應該丟棄。
Path,可使用該Cookie的路徑。
Port,說明可使用Cookie的端口號,如:`Set-Cookie2:name="xx"; Port="80,81,82"`。若只有Port沒有值,說明只能向當前服務器端口提供Cookie。
Secure,是否只有在使用ssl鏈接時才發送該Cookie。
複製代碼
請求頭中的大體格式以下:Cookie: name1=value1[; name2=value2][; name3=value3]...
複製代碼
在回傳匹配Cookie時,須要將其過濾器一同傳輸,並且保留的關鍵字須要以$開頭。今天主要了解了服務器識別客戶端的相關手段. 但願你們也能有所收穫.網站
咱們在享受技術帶來的便利的同時,本身的隱私也在丟失。技術本是無罪的,只是某些人的心壞了。你是否也被上面的技術跟蹤了....編碼