首頁  >  文章  >  後端開發  >  探索cookie的所在地:它們究竟存放在哪裡?

探索cookie的所在地:它們究竟存放在哪裡?

WBOY
WBOY原創
2024-01-19 09:53:051364瀏覽

探索cookie的所在地:它們究竟存放在哪裡?

隨著網路科技的不斷發展,我們在網站上瀏覽資訊、購物、付款等行為是司空見慣。而為了方便使用者瀏覽網站,網站伺服器會將一些資料保存在使用者的瀏覽器上,當使用者下次造訪該網站時,這些資料會被提取出來供伺服器使用。這種保存資料的一種機制就是cookie。那麼,cookie到底存放在哪裡呢?本文將會對cookie的儲存位置進行探討,並提供一些程式碼範例。

  1. Cookie的儲存位置

瀏覽器在客戶端保存cookie,因此cookie的儲存位置是由特定的瀏覽器實作方式決定的。不同的瀏覽器有不同的cookie儲存位置。在主流的瀏覽器中,cookie儲存的位置如下:

  • Chrome:cookie資訊保存在使用者的電腦上的%AppData%LocalGoogleChromeUser DataDefaultCookies檔案中;
  • Firefox:cookie資訊保存在用戶的計算機上的%AppData%RoamingMozillaFirefoxProfilesXXXX.defaultcookies.sqlite中;
  • Safari:cookie信息保存在用戶的計算機上的~/Library/Cookies/cookies.binarycookies中;
  • Edge:cookie資訊保存在%AppData%LocalMicrosoftEdgeUser DataDefaultCookies中;
  • Internet Explorer:cookie資訊儲存在C:Users使用者名稱AppDataRoamingMicrosoftWindowsCookiesLow中,不過在Windows 10以後的系統中已逐漸棄用。

總之,在大多數情況下,cookie資訊都是保存在本機檔案中,而不是在遠端伺服器上。

  1. JavaScript中的Cookie操作

下面我們將介紹在JavaScript中如何操作Cookie。一般來說,cookie的讀取、新增、刪除是基於document.cookie這個屬性來實現的。

讀取cookie值:

在JavaScript中,可以透過以下方式來讀取cookie:

function getCookie(name){
  var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
  if(arr=document.cookie.match(reg)){
    return decodeURIComponent(arr[2]);
  }else{
    return null;
  }
}

使用正規表示式來匹配要尋找的cookie的名稱,然後匹配到了就回傳名稱對應的值。需要注意的是,由於cookie值可能包含中文等非ASCII字符,因此需要解碼(使用decodeURIComponent()方法)。

新增cookie:

在JavaScript中,可以透過以下方式來新增cookie:

function setCookie(name,value,duration){
  var exp = new Date();
  exp.setTime(exp.getTime() + duration * 24 * 60 * 60 * 1000);
  document.cookie = name + "=" + encodeURIComponent(value) + ";expires=" + exp.toGMTString() + ";path=/";
}

其中,name代表cookie的名稱,value代表cookie的值,duration代表Cookie的有效期限(單位為天)。這裡使用了Date物件來計算cookie的過期時間,然後將cookie資訊儲存在document.cookie中。

刪除cookie:

在JavaScript中,可以透過以下方式來刪除cookie:

function deleteCookie(name){
  var exp = new Date();
  exp.setTime(exp.getTime() - 1);
  var cval = getCookie(name);
  if(cval != null){
      document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";path=/";
  }
}

其中,name代表cookie的名稱。這裡將cookie的過期時間設為一個過去的時間,然後儲存到document.cookie中。

  1. Node.js中的Cookie操作

在Node.js中,可以使用第三方函式庫來方便地操作Cookie。這裡以cookie-parser這個函式庫為例,介紹如何在Node.js中新增、讀取、刪除Cookie。

安裝cookie-parser:

在終端機中輸入以下指令來安裝cookie-parser:

npm install cookie-parser

新增cookie:

在Node.js中,可以透過以下方式來新增cookie:

const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.get('/setCookie',function(req,res){
  res.cookie('name','value',{maxAge: 900000, httpOnly: true });
  res.send('cookie added');
});

其中,name代表cookie的名稱,value代表cookie的值,maxAge代表cookie的有效期(單位為毫秒)。

讀取cookie:

在Node.js中,可以透過以下方式來讀取cookie:

app.get('/getCookie',function(req,res){
  var value=req.cookies.name;
  res.send('cookie value:'+value);
});

其中,name代表cookie的名稱。

刪除cookie:

在Node.js中,可以透過以下方式來刪除cookie:

app.get('/clearCookie',function(req,res){
  res.clearCookie('name');
  res.send('cookie cleared');
});

其中,name代表cookie的名稱。

  1. 結論

本文介紹了cookie儲存位置的探討以及JavaScript和Node.js中的Cookie操作方法。需要注意的是,cookie資訊是不加密的,因此敏感資料不應該直接儲存在cookie中,而是應該進行加密處理。另外,需要注意cookie的有效期,以避免過期未清除導致的安全問題。

以上是探索cookie的所在地:它們究竟存放在哪裡?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn