iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

前端補給站,每天一個知識點系列 第 29

Day28【Web】網頁的號碼牌:Cookie

無狀態的 HTTP

瀏覽網頁常用的 HTTP(超文本傳輸協定)
是一種無狀態協定
也就是收到請求就建立連結,
請求完後就斷開連結將資源釋放出來。

HTTP 只看請求的內容,
而不紀錄客戶端的「狀態」,
從任何客戶端發來的請求都一視同仁,
僅做出對請求對應的回覆。


紀錄使用者樣態的 Cookie

隨著網路交互活動變得複雜,
客戶端需要與伺服器保持長期連線與互動,
程式設計師 Lou Montulli
在 1993 年發明了「cookie」,
也就是一小段紀錄客戶端狀態的文字檔案。

這段資訊會在客戶拜訪網站時由伺服器產生發送,
並由收到的瀏覽器負責儲存起來,
以便下次拜訪網站時使用。

cookie 就像號碼牌或置物櫃鑰匙,
是一個驗證身分的標誌,
有了這個 cookie,
我們就能在下次拜訪同樣網站時,
取得 cookie 上紀錄所對應的內容。

cookie 不但能讓我們取得客製化訊息,
更可以提高網站的訪問速度、
減少需要人工填寫的欄位,
為網站互動提供更多便利性。

不過隨著網路技術發展,
cookie 也漸漸帶來危害與濫用,
導致個人隱私外洩、
大量垃圾訊息等問題。

各瀏覽器與伺服器平台
目前也都在加強 cookie 安全性,
如使用簽章過的 Signed Cookie
或嘗試尋找比 cookie 更好的替代方案。


cookie 的組成

cookie 內包含以下屬性

  • name=value(必要)
    • 使用 cookie 時可用 name 來獲取對應的 value 內容,name 和 value 皆為純文字,若包含特殊字元時必須使用跳脫字元(Escape Character)換成對應字碼。
  • expires=date(選項)
    • cookie 的有效期限,預設值為瀏覽器結束執行的同時到期。
  • path=path(選項)
    • 設定可讀取 cookie 的(最上層)目錄,預設值為建立該 cookie 的網頁目錄及其子目錄。
  • domain=domain(選項)
    • 設定可讀取 cookie 的網域,預設為僅能由設定該 cookie 的網頁站台讀取。
  • secure(選項)
    • 設定是否用加密的方式來傳輸 cookie,預設使用無加密的 HTTP。

參考資料:


上一篇
Day27【CSS】偽類 & 偽元素
下一篇
Day29【Web】網頁的會員卡:Session
系列文
前端補給站,每天一個知識點30

尚未有邦友留言

立即登入留言