客戶端識別需求
HTTP最初是一個匿名的、無狀態(tài)的請求/響應(yīng)協(xié)議。服務(wù)器處理來自客戶端的請求,然后給客戶端回送一條響應(yīng)。Web服務(wù)器幾乎沒有什么信息可以判斷是哪個用戶發(fā)送的請求,也無法記錄來訪用戶的請求序列。
現(xiàn)代的Web站點希望能夠提供個性化的接觸。它們希望對另一端的用戶有更多的了解,并能在用戶瀏覽頁面時對其進(jìn)行跟蹤。
客戶端識別技術(shù)
- 承載用戶身份信息的HTTP首部
- 客戶端IP地址跟蹤,通過用戶的IP地址對其進(jìn)行識別
- 用戶登錄,用認(rèn)證方式來識別用戶
- 胖URL,一種在URL中嵌入識別信息的技術(shù)
- Cookie,一種功能強(qiáng)大且高校的持久身份識別技術(shù)
Cookie詳解
Cookie的誕生
Cookie最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月發(fā)明的。
Cookie的工作流程
- 用戶向服務(wù)器發(fā)起HTTP請求,服務(wù)器在響應(yīng)中通過相應(yīng)頭字段Set-cookie為客戶端設(shè)置cookie,瀏覽器接收到響應(yīng)緩存cookie到內(nèi)存或者硬盤;
- 以后用戶每次向同一服務(wù)器發(fā)送HTTP請求時,瀏覽器會查找有無與此域名以及路徑對應(yīng)的且沒有過期的cookie,如果有,則將改cookie添加到請求頭字段cookie。
Cookie的技術(shù)細(xì)節(jié)
最初的cookie規(guī)范是由網(wǎng)景公司定義的。這些“版本0”的cookie定義了Set-cookie響應(yīng)首部、cookie請求首部以及用于控制cookie的字段。版本0的cookie看起來如下所示:
Set-cookie: name=value [; expires=date] [; path=path] [; domain=domain] [; secure=secure]
Cookie: name1=value1 [; name2=value2]
- Exipres:過期時間,GMT格式。如果沒有設(shè)置,將在會話結(jié)束時過期;
- Domain:域名,瀏覽器只向與特定域匹配的服務(wù)器發(fā)送cookie。如果沒有設(shè)置,將默認(rèn)為當(dāng)前服務(wù)器的域名;
- Path:路徑,如果沒有設(shè)置,將默認(rèn)為產(chǎn)生Set-cookie響應(yīng)的URL路徑;
- Secure:如果包含這一屬性,就只有在HTTP使用SSL安全連接時才會發(fā)送cookie。
Cookie的主要用途
判定注冊用戶是否已經(jīng)登錄網(wǎng)站;跟蹤用戶;購物車記錄等等
Cookie的隱患 - 跨站腳本攻擊
- Cookie欺騙