網路Cookie工作原理

2021-06-04 17:41:14 字數 3613 閱讀 4731

引言

雖然大多數網路cookie使用起來相當簡單,但是它們也有自己獨特的原理。由於涉及到網際網路隱私問題,cookie從2023年就開始受到廣大**的關注,直到現在仍存在著激烈的爭論。

然而,cookie提供了使web更加容易導航的能力。幾乎每個**的設計人員都會使用cookie,因為它們能夠提供更好的使用者體驗,並使得收集有關**訪問者的準確資訊變得非常容易。

在本文中,我們將了解cookie背後的基本技術及其支援的一些功能。

cookie基本知識

2023年4月,筆者在一家頗有規模和影響力的報紙上閱讀了一篇有關深入**網際網路隱私的文章,文中對cookie進行了定義。定義大致是這樣的:

類似這樣的定義在新聞報道中相當普遍,而問題在於所有這些資訊都是錯誤的。cookie不是程式,不能像執行程式一樣執行。因此,cookie自己不能收集任何資訊,也不能從您的計算機上收集與您有關的任何個人資訊。

下面是cookie的正確定義:cookie是指web伺服器可以在使用者的硬碟上儲存的一段文字。cookie允許**將資訊儲存在使用者的計算機上,並在以後檢索此資訊。這些資訊以名稱/值對的形式儲存。

例如,**可以為每個訪問者生成唯一的id號,並使用cookie檔案將此id號儲存在每個使用者的計算機上。

如果使用微軟的ie瀏覽器來瀏覽頁面,則可以看到儲存在計算機上的所有cookie。它們通常駐留在名為c:windowscookies的目錄中。當筆者在計算機上檢視該目錄時,發現了165個檔案,每個檔案都是乙個包含名稱/值對的文字檔案,並且筆者的計算機上儲存了與每個**相對應的乙個檔案。

您可以看到這個目錄中的每乙個檔案都是簡單的普通文字檔案,通過檢視檔名可以看出是哪個**將該檔案儲存到您的計算機上(這些資訊也儲存在檔案中)。通過單擊每乙個檔案,可以將其開啟。

例如,筆者訪問過goto.com,該**已將乙個cookie放置在筆者的計算機上。goto.com對應的cookie檔案包含以下資訊:

goto.com已在筆者的計算機上儲存了乙個名稱/值對。此名稱/值對的名稱為userid,值為a9a3bece0563982d。當筆者第一次訪問goto.com時,該**為筆者分配了乙個唯一的id值,並將其儲存在筆者的計算機上。

(請注意,在上面顯示的三個值之後,可能還有一些其他的值儲存在檔案中。這些值是瀏覽器的管理資訊。)

amazon.com在筆者的計算機上儲存的資訊更多一些。當檢視amazon在筆者的計算機上建立的cookie檔案時,發現其中包含以下資訊:

可以看出,amazon在筆者的計算機上儲存了主使用者id、每個會話的id以及會話的開始時間(以及乙個不知道表示什麼的x-main值)。

大多數**僅在計算機上儲存一條資訊,即使用者id。但是**可以根據需要儲存許多名稱/值對。

名稱/值對只是命名的資料段,而不是乙個程式,也不能「執行」任何操作。**只能檢索它放置在計算機上的資訊,而無法檢索其他cookie檔案中的資訊,也不能檢索計算機上的任何其他資訊。

cookie資料是如何移動的?

如上一節中所述,cookie資料只是**儲存在您的硬碟上的乙個名稱/值對。所有cookie資料都是這樣。**儲存此資料,並在以後接收此資料。乙個**只能接收其儲存在計算機上的資料,該**不能檢視任何其他cookie或計算機上的任何其他內容。

資料將按以下方式移動:

當瀏覽器執行上述操作時,它會在您的計算機上尋找amazon設定的cookie檔案。如果找到amazon cookie檔案,瀏覽器就會將該檔案中的所有名稱/值對連同url一起傳送給amazon的伺服器。如果未找到任何cookie檔案,則不會傳送任何cookie資料。

amazon的web伺服器將接收cookie資料和頁面請求。如果接收到名稱/值對,amazon就可以使用它們。

如果未接收到任何名稱/值對,amazon將知道您之前從未訪問過該**。伺服器將在amazon的資料庫中為您建立乙個新id,然後將名稱/值對放置在它傳送的網頁的標頭中,從而傳送到您的計算機上。計算機將名稱/值對儲存在硬碟上。

伺服器還可以將其他一些資訊連同名稱/值對一起傳送,這些資訊中包括到期日期。另乙個資訊是路徑(以便**可以將不同的cookie值與**的不同部分相關聯)。

您可以控制整個過程。在瀏覽器中設定乙個選項,以便每當**向您傳送名稱/值對時,瀏覽器都會通知您。之後,您便可以接受或拒絕這些值。

**是如何使用cookie的?

cookie由於為使用**的人解決了乙個大問題而逐漸發展起來。從廣義上說,cookie允許**在計算機上儲存狀態資訊,這些資訊可讓**記住瀏覽器所處的狀態。id是一條簡單的狀態資訊——如果計算機上存在某個id,則相應**就會知道您之前已訪問過該**。這個狀態表明「您的瀏覽器至少已訪問該**一次」,並且該**可以通過那次訪問記住您的id。

**通過使用資料庫來完成此任務。當訪問者第一次訪問**時,**會在資料庫中建立乙個新id,並將此id作為cookie傳送。當使用者下一次返回**時,**會在資料庫中將與此id相關的計數器遞增,從而知道訪問者的返回次數。

由於筆者居住在北卡羅來納州羅利市,這樣的天氣預報才有意義。

大多數**似乎都會將類似這樣的首選項儲存在**的資料庫中,並僅將id儲存為cookie。不過,將實際值儲存在名稱/值對中是另一種實現方式(稍後我們將討論此方法不受歡迎的原因)。

電子商務**可以實現購物車和「快速結帳」選項這樣的功能。cookie包含乙個id並可讓**跟蹤您向購物車中新增的不同商品。您新增到購物車中的每個商品會與您的id值一起儲存在**的資料庫中。當您結帳時,**通過從資料庫檢索您的所有選擇,就可以知道購物車中的商品。在不使用cookie或類似物件的情況下,人們很難實現方便的購物機制。

cookie存在的問題

cookie使許多原本不可能的事情變為了可能,但它還不是一種完善的狀態機制。例如,cookie在以下一些方面還不夠完善。

總的來講,除了要求使用者進行註冊並在**資料庫中儲存所有資訊之外,可能沒有任何其他簡單的解決方案來解決這些問題。

當您使用博聞網註冊系統進行註冊時,可以通過以下方式解決此問題:**會記住您的cookie值,並將其與您的註冊資訊儲存在一起。如果您有機會從任何其他計算機(或已丟失cookie檔案的計算機)登入,則伺服器將修改該計算機上的cookie檔案以包含與您的註冊資訊相關的id。這樣,多台計算機上就可以使用的相同id值了。

關於cookie的爭議

讀到這裡時,您可能很想知道為什麼**一直以來會對cookie和網路隱私存在這些爭議。從上文中,您已了解到cookie都是善意的文字檔案,並且知道它們提供了大量有用的web功能。

然而有兩個方面的問題引起了有關cookie的強烈爭議:

cookie工作原理

cookie 技術產生源於 http 協議在網際網路上的急速發展。隨著網際網路的快速發展,人們需要更複雜的網際網路互動活動,就必須同伺服器保持活動狀態。為了適應使用者的需求,技術上推出了各種保持web瀏覽狀態的手段,其中就包括了cookie技術。舉個例子,使用者 linuxmooc 在沒有登陸 ba...

cookie工作原理

定義乙個cookie 本cookie函式可以有6個屬性,常用的有3個引數。例項 value the best way is by yourself setcookie cookiename value,time 60 60 24 7 接收和處理cookie php對cookie有很好的支援,和for...

COOKIE的工作原理

以下是自學it網 中級班上課筆記 www.zixue.it 伺服器端在http 協議的響應中,傳送 set cookie 的頭資訊 客戶端 瀏覽器 分析頭資訊 儲存 cookie值 以後的訪問中,客戶端 瀏覽器 每次都在請求頭資訊中帶著 cookie值.由上圖可以看出,cookie是可以隨便偽造的....