作者頭像

By Wanda / 2021/03/19更新

摘要:

  • Cookie是什麼這篇文章講述了什麼是Cookie、Cookie的用途、Cookie的一些弊端透過這3點來了解Cookie的一個基本運行機制。還介紹清除Cookie的方法、如何查看Cookie以及封鎖網站Cookie,讓您了解到Cookie是可操控的。最後,延伸出另外一個Session機制並簡單介紹和區分它們之間的區別。

  • Cookie是什麼

 

Cookie是什麼?

cookies是什麼

我們這裡討論的Cookie它不是小餅乾,它是HTTP Cookie,也可以說是HTTPS Cookie它更安全,絕大部分網站都屬於這種類型。Cookie是指某些網站為了辨別使用者的身分而在用戶端瀏覽器上存儲的一些小型文本檔案。於1993年由網景公司前僱員盧·蒙特利所發明。

通俗一點講就是您在瀏覽一些網站後,會在您使用的瀏覽器中留下一些小小的檔案,這些檔案稱之為Cookie。當您以後再去瀏覽這些網站,系統首先會讀取這些Cookie數據在必要的時候更新,Cookie是伺服器端暫存到用戶端的一些數據,好讓伺服器端快速的識別用戶。這樣從某種程度上講也可以提高您瀏覽網頁的速度。

列舉一個不太恰當的例子:有些電視劇集裡,有人為了逃出無法一片森林,他就在逃出森林的沿途中,留下一些他隊友可以辨識的東西來標記在他逃出的路線途中,這些標記的東西我覺得就有點像前面提到的Cookie數據。

溫馨提示:Cookie其實是會涉及到使用者的隱私和安全問題,現在很多正規一點的網站在您第一次訪問時就會提醒您,該網站為了提升用戶體驗,會蒐集您的一些訊息,比如:您在網站上輸入的訊息,您瀏覽過的一些訊息。具體內容可以看這些網站上的Cookie政策資訊。

網站cookie提示說明

 

Cookie的一些用途

我覺得Cookie有以下2個特別實用和重要的用途:

  • 讓我們可以在網路上買自己想要的物品。
  • 為我們存儲網站帳戶訊息,以免下次登錄時重複輸入帳戶訊息。

HTTP(HyperText Transfer Protocol——超文本傳輸協定)協定本身是無記憶狀態的,意思是互聯網上所有網頁間是沒有任何聯繫的,這種聯繫是網頁間有了記憶,而這個記憶需要透過Cookie實現。

最典型的例子,網路上購買想購之物。從您選購商品到確定電話地址訊息再到結賬付款,中間會涉及到很多網頁和訊息,這些都是Cookie的功勞。如果我們沒有Cookie,就會出現這樣的場景,我們剛加入購物車的商品,在點結算按鈕時,下一個頁面就不知道我們購物車有什麼商品,根本沒有辦法網購商品。

另一個例子,避免多次輸入帳戶訊息登入網站。有一些社交網站需要輸入帳戶密碼訊息登入,當您第一次登入時,會在登入框下面有一個[下次自動登錄]的選框,勾選後,下次再訪問此網站時,會自動登入您的帳戶。而實現的原理也是透過訪問您系統Cookie數據來做到的。如果沒有Cookie,您每次訪問此網站都必須重新輸入一遍帳號密碼,顯得過於繁雜,也影響用戶體驗。

 

Cookie的一些弊端

由於HTTP協議請求是明文傳遞的,所以HTTP Cookies存在安全性問題,但是您可以使用超文字傳輸安全協定,就是現在很多網站都是HTTPS開頭的,這樣的HTTPS Cookies會更加安全保密。這種是透過付費購買SSL網站安全憑證或者自己申請免費的SSL數位憑證。

Cookie的大小被限制在4KB左右,在面對一些特別複雜的存儲是遠遠不夠用的,我們可以使用JWT(Json Web Token)或者Session來實現更複雜的存儲。

 

如何清除Cookies?

目前比較主流的瀏覽器有Chrome、Edge、Firefox、IE、Opera等,刪除Cookie的步驟基本大致差不多。如果您想看這些瀏覽器清除Cookie的詳細步驟,可以參考我寫的如何清除Cookies一文中有詳細步驟,還包括行動裝置的一些瀏覽器清除Cookies的詳細流程。

 

如何查看Cookie訊息?

Cookie訊息一般都是一串文本字符,非專業人士是看不懂這串字符的,應大家想知道Cookie是什麼的好奇心,有些人特別想知道這串字符如何查看,看看長什麼樣子,每天都在清除Cookies卻不知道清除了什麼的滋味有些難受。下面就教大家如何查看一個網站Cookie訊息。

步驟1:首先,您需要開啟一個網頁瀏覽器,我這裡用Chrome瀏覽器來演示,在地址欄輸入您需要查看的網站HTTPS地址(我這裡用Apple網站為例)。

查詢網站Cookie

步驟2:進入網站後,把地址欄字元清空,重新複製貼上這串字符:“document.write(document.cookie)”並在這串字符的前面手動輸入:”javascript:”,代表用javascript程式執行,地址欄輸入完成後應該是這樣:javascript:document.write(document.cookie),最後在鍵盤上按Enter鍵運行指令。

查詢網站Cookie

溫馨提示:指令開頭的“javascript:”一定要手動輸入,它是無法複製到瀏覽器位址欄的,我嘗試過的大部分瀏覽器都是如此,應該是瀏覽器本身的一種機制。

步驟3:當按下Enter鍵後,網頁上會呈現出一段無法看懂的文本字元,這一段字元代表這個網站所創建的Cookies訊息。而不同網站有不同的Cookie,有些網站可能沒有Cookie訊息。現在您了解到Cookies是什麼了嗎?

網站Cookie內容

 

如何拒絕網站在系統裡存儲Cookie?

一般我們是不會拒絕存儲Cookie,但是有些人總覺得他的隱私被侵犯,會被不法分子所利用,也不喜歡網站存儲他的帳戶訊息,如果您也有這種擔憂,不妨在瀏覽器中設定網站不在您的系統裡留下任何Cookie訊息。

我以Chrome瀏覽器來演示封鎖所有Cookie訊息:

步驟1:首先,在Chrome位址列中複製貼上:“chrome://settings/cookies”後按Enter鍵進入相應Cookie設定介面,在Cookie介面中選擇[封鎖所有Cookie],然後關閉瀏覽器,再重新開啟,即可生效。

Chrome封鎖Cookies

在設定介面,封鎖所有Cookie那一選項後面註明不建議這樣做,下面列出了幾點關於封鎖Cookie後會帶來的後果,個人建議是不需要封鎖,我們只有接受這種機制的存在。否則有可能許多網站的功能都將無法正常使用甚至無法開啟網頁的情況都會出現。

 

Session是什麼,與Cookie有什麼區別?

Session是一種將資料存儲到伺服器端的機制,它和Cookie的區別在於,Cookie機制採用的是在用戶端保持的一種狀態,而Session機制採用的是在伺服器端保持的一種狀態。

我例舉一個生活中和這2種機制相類似的例子:

一位寶媽暑假期間帶他的3歲大的孩子去商場玩,碰到商場大廳佈置了一個特別大的海洋球娛樂設施。小朋友鬧著要玩,媽媽看到商家有促銷活動,暑假期間玩5次,送1次。如果我們用Cookie與Session機制來記錄這種活動,看是怎麼實現的。

Cookie機制:媽媽帶寶寶來玩一次,商家會給媽媽發一張小卡片,上面記錄一些訊息,當她集滿5張小卡片時,就可以兌換一次免費玩的機會。那麼寶寶玩的次數記錄卡片是攜帶在媽媽身上的。一旦遺失是無法補救的。

Session機制:商家會讓媽媽辦理一張專屬會員卡,寶寶每來玩一次,只需要出示會員卡,此時的次數記錄會留存一份到商家的電腦裡,當滿5次後,商家會自動贈送一次玩海洋球的機會。那麼寶寶玩的次數是記錄在商家電腦裡,就算會員卡遺失,只要提供相關訊息,商家電腦是可以核實的。

這2個例子,肯定不能全面的說明Cookie和Session機制的區別,從某種程度上講還是能說明一些區別。希望透過這個例子能讓您更了解Cookies是什麼。

總結

透過寫Cookie是什麼這篇文章,也讓我了解到,Cookie對於整個互聯網來說至關重要,是它讓沒有記憶的網頁之間產生了聯繫,也改變了我們的生活形態讓生活更加多樣化,感謝這位偉大的發明者——盧·蒙特利。

如對文章有任何疑問和建議請發送電子郵件到wanda.mytech@gmail.com,我會不定期更新文章內容,希望幫助更多的人解決問題。