什么是 Cookie?
Cookie 是您訪問過的網站創建的文件,用于存儲瀏覽信息,例如您的網站偏好設置或個人資料信息。共有兩種類型的 Cookie:第一方 Cookie 是由地址欄中列出的網站域設置的 Cookie,而第三方 Cookie 來自在網頁上嵌入廣告或圖片等項的其他域來源。
Cookie可以用來提升用戶體驗,比如網站可以使用Cookie來記錄用戶的登錄狀態,用戶只要登錄一次就可以不用登錄了,購物網站通過Cookie來保存購物車中的商品等。同時很多的網站分析都是依靠Cookie來完成的。
以網站統計為例,目前主要的統計方式是日志記錄法和頁面標記法。一般日志記錄法細化到IP,而頁面標記法細化到Unique Visitor。UV并不僅僅是一個指標,更重要的是的它可以把一個用戶多次訪問的事件聯系在一起。包括用戶第一次從哪里來,第二次從哪里來,在網站上的瀏覽軌跡等都可以查詢出來。
Cookie是如何工作的?
一般來說,Cookie通過HTTP Headers從服務器端返回到瀏覽器上。首先,服務器端在響應中利用Set-Cookie header來創建一個Cookie ,然后,瀏覽器在它的請求中通過Cookie header包含這個已經創建的Cookie,并且反它返回至服務器,從而完成瀏覽器的論證。
比如,我們訪問一個網站,來到了登錄的頁面。頁面需要我們輸入用戶名和密碼,同時下面有一個選項,叫“保留我的登錄狀態”,如果輸入了用戶名,密碼。為了下次在來這個網站,不用再重新輸入,我們激活了保留狀態的選項。最后點了提交。這時,我們的瀏覽器就會和網站服務器之間通過HTTP協議進行連接,提交剛才輸入的內容和選擇。服務器收到以后,會判斷這個用戶名密碼是否正確,因為我們需要保留狀態,就需要設置Cookie來記錄狀態。那服務器會在返回的HTTP數據包的頭部包含SetCookie這個指令來告訴瀏覽器要保存的Cookie。瀏覽器收到以后會把這個Cookie加密存儲到電腦上。這個Cookie記錄的一般是用戶在這個網站的唯一的ID。之后,只要每次訪問這個網站(只要還是這個域名),我們的瀏覽器在請求這個網站服務器數據的時 候,都會在HTTP請求數據包的頭部增加一條包含Cookie數據的信息,比如這里會告訴服務器:“我是你的用戶,我的ID是9527。”那服務器收到這 個信息,就不會再提示登錄,而我們就已經是登錄的狀態了。
第一方Cookie和第三方Cookie
Cookie通常可以分為兩類,第一方Cookie和第三方Cookie,第一方Cookie和第三方Cookie,都是網站在客戶端上存放的一小塊數據。他們都由某個域存放,只能被這個域訪問。他們的區別其實并不是技術 上的區別,而是使用方式上的區別。比如,訪問www.a.com這個網站,這個網站設置了一個Cookie,這個Cookie也只能被www.a.com 這個域下的網頁讀取,這就是第一方Cookie。如果還是訪問www.a.com這個網站,網頁里有用到www.b.com網站的一張圖片,瀏覽器在 www.b.com請求圖片的時候,www.b.com設置了一個Cookie,那這個Cookie只能被www.b.com這個域訪問,反而不能被 www.a.com這個域訪問,因為對我們來說,我們實際是在訪問www.a.com這個網站被設置了一個www.b.com這個域下的Cookie,所以叫第三方Cookie。
第一方Cookie的優勢和應用
第一方Cookie的最大優勢是接受率高。一般主流的瀏覽器的都會有隱私的設置,可以讓用戶設置是否接受Cookie,接受哪些Cookie。除了 完全不接受Cookie這個設置以外,其他情況下,第一方Cookie都是會被用戶接受的(不接受的話,是沒辦法把那小塊數據保存下來的)。所以,如果沒有特殊要求,使用第一方Cookie會比第三方Cookie,我們通過分析工具得到的數據會更準確。
第三方Cookie的優勢和應用
第三方Cookie的接受率不如第一方Cookie(不過主流的瀏覽器默認的設置下也接受帶P3P協議的第三方Cookie,我的經驗是接受率能達 到90%,甚至95%以上),但在某些特定情況下可以實現第一方Cookie無法實現的功能。比如,當我們有多個域名的網站需要跟蹤,我們希望了解到用戶點擊某個廣告到達域名A下的網頁,然后可能瀏覽了不論那個域名下的頁面,最后在域名B下的網頁完成注冊的情況。廣告可以在域名A下的網頁被跟蹤到,而注冊可以在域名B下的網頁跟蹤到。如果我們使用第一方Cookie,會為域名A建立一個Cookie,為域名B再建立一個Cookie,他們可以關聯各自域名下網頁上的行為,但是無法關聯起來。而使用第三方Cookie,那么無論多少個域,都只有一個Cookie,一個屬于第三方域的Cookie,網站下所有域都能共享這個Cookie,那么所有的行為都能被關聯起來分析。
結論:對于通過腳本型的網站分析工具來獲取數據
P3P解決第三方cookie存取的問題
P3P(Platform for Privacy Preferences)是由萬維網協會研制,它為Web用戶提供了對自己公開信息的更多的控制。支持P3P的Web站點可以為瀏覽者聲明他們的隱私策略。支持P3P的瀏覽器則可以將Web站點的策略與用戶的隱私偏好進行對比,并為用戶提出不匹配的警告。因此,用戶可以被通知有關Web隱私的處理方式。更詳細的說明請看http://www.w3.org/P3P/的介紹。
以上幾乎都是廢話,我自己的理解就是通過P3P 可以使 用戶自己指定瀏覽器的隱私策略。而這里只用到了關于cookie的一些設置。
我們打開ie瀏覽器–>工具–>internet選項–>隱私分頁 用戶可以通過手工 “導入” 用戶隱私策略文件
PHP使用P3P來跨域跟蹤的示例
首先修改Windows文件,將要測試的兩個域名進行指向。
第一步:創建 a_setcookie.php 文件,內容如下:
//header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); ?>
第二部:創建 a_getcookie.php 文件,內容如下:
var_dump($_COOKIE); ?>
第三部:創建 b_setcookie.php 文件,內容如下:
三個文件創建完畢后,我們通過瀏覽器依次訪問:
我們會發現,在訪問b.com域的時候,我們并沒有在a.com域設置上cookie值。
然后我們修改一下a_setcookie.php文件,去掉注釋符號,a_setcookie.php即為:
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'); setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); ?>
再次通過瀏覽器依次訪問:
這次,你會發現在訪問b.com域的時候,我們設置了a.com域的cookie值。
其他Cookie相關知識
參考資料
Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號 google網站地圖 百度網站地圖 網站地圖
公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752
法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明