Web服務器可能會同時與數千個不同的客戶端進行對話,這些服務器通常要記錄下他們在與誰交談,而不會認為所有的請求都來自匿名用戶的客戶端。
下面我們將討論下列用戶識別機制:
1 承載用戶身份信息的HTTP首部
2 客戶端ip地址跟蹤,通過用戶的IP地址對其進行識別
3 用戶登陸,用認證方式來識別用戶
4 胖URL,一種在Url 中嵌入識別信息的技術。
5 cookie 一種功能強大且高效的持久身份識別技術
Http首部
客戶端ip地址
用戶登陸
胖URL
COOKIE
Cookie 是當前識別用戶,實現持久化會話的最好方式,
Cookie 的類型:可以籠統的將cookie分為兩類,會話cookie和持久cookie,會話cookie是一種臨時cookie,他記錄了用戶訪問站點時的設置和偏好,用戶退出瀏覽器的時候,cookie就會被刪除了,持久cookie的生存時間更長一些,他們存儲在硬盤上,瀏覽器退出,計算機重啟時他們仍然存在,通常會用持久化cookie維護某個用戶會周期性訪問的站點的配置文件或登錄名。
cookie是如何工作的:
cookie就像服務器給用戶貼的貼紙一樣,用戶訪問一個web站點時,這個web站點就可以讀取那個服務器貼在用戶身上的所有貼紙。用戶首次訪問web站點時,web服務器對用戶一無所知,web服務器希望這個用戶再次回來的時候,所以想給這個用戶“貼上”一個獨有的cookie,着樣以后就可以識別這個用戶了,cookie中包含一個由名字=值這樣的信息構成的任意列表,並通過set-CookieHTTP響應首部將其貼到用戶身上。
cookie中可以包含任意信息,但他們通常都只包含一個服務器為了進行跟蹤而產生的獨特的識別碼。
cookie罐
cookie的基本思想就是讓瀏覽器積累一組服務器特有的信息,每次訪問服務器時都將這些信息提供給他,因為瀏覽器要負責存儲cookie信息,所以此系統被成為客戶端側狀態,這個cookie規范的正式名稱為HTTP狀態管理機制。
不同站點使用不同的cookie
瀏覽器內部的cookie罐中可以有成百上千個cookie,但瀏覽器不會將每個cookie都發送給所有的站點,實際上,通常只向每個站點發送2-3個cookie,原因如下:
1 對所有這些cookie字節進行傳輸會嚴重降低性能。
2 cookie中包含的服務器特有的名值對,所以對大部分站點來說,大多數cookie都只是無法識別的誤用數據
3 將所有的cookie發送給所有站點會引發潛在的隱私問題。
總之,瀏覽器只向服務器發送服務器產生的那些cookie。
cookie的域屬性
產生cookie的服務器可以向set-cookie響應首部添加一個Domain屬性來控制哪些站點可以看到那些cookie,
cookie路徑屬性
cookie規范甚至允許用戶將cookie與部分web站點關聯起來,可以通過Path屬性來實現這一功能,在這個屬性列出的URL路徑前綴下所有的cookie都是有效的。因此cookie就是由服務器貼到客戶端上,由客戶端維護的狀態片段,只會回送給那些合適的站點,下面我們來更仔細地看看cookie的技術和標准。
cookie成分:
現在使用的cookie規范有兩個不同的版本,cookies版本0和cookies版本1,版本1是對版本0的擴展,應用不如后者廣泛。
版本0:
cookie定義了set-cookie響應首部,cookie請求首部以及用於控制cookie的字段
set-cookie:name=value [; expires=date] [;path=path] [;domain=domain] [;secure]
詳細解釋:
Name=value 強制的,name和value都是字符序列,除非包含在哦雙引號內,否則不能使用分號,逗號等,
expires 可選的,這個屬性指定一個日期字符串,用來定義cookie的實際生存期,一旦到了過期日期,就不能在存儲或發布這個cookie了,
Domain 可選的,瀏覽器只向指定的域中的服務器發送cookie,這樣服務器就將cookie限制在特定的域中,只有指定域中的主機才能為一個域設置cookie,這些域中至少要有兩個或三個句號。
path 可選的 通過這個屬性可以為服務器上特定的文檔分配cookie,如果path屬性是一個url路徑前綴,就可以附加一個cookie,
secure 可選的如果包含這一屬性,就只有在http使用ssl安全鏈接時才會發送cookie.
cookie與會話跟蹤
可以用cookie在用戶與某個web站點進行多項事物處理時對用戶進行跟蹤,電子商務web站點用會話cookie在用戶瀏覽時記錄下用戶購物車信息。