ExpressJS - Cookie



Cookie 是簡單的、小型的檔案/資料,隨伺服器請求傳送到客戶端並在客戶端儲存。每次使用者重新載入網站時,都會將此 Cookie 與請求一起傳送。這有助於我們跟蹤使用者的操作。

以下是 HTTP Cookie 的多種用途:

  • 會話管理
  • 個性化(推薦系統)
  • 使用者追蹤

要在 Express 中使用 Cookie,我們需要 cookie-parser 中介軟體。要安裝它,請使用以下程式碼:

npm install --save cookie-parser

現在,要在 Express 中使用 Cookie,我們需要 **cookie-parser**。cookie-parser 是一箇中間件,它 *解析附加到客戶端請求物件的 Cookie*。要使用它,我們將在我們的 **index.js** 檔案中引入它;這可以與我們使用其他中介軟體的方式相同。在這裡,我們將使用以下程式碼。

var cookieParser = require('cookie-parser');
app.use(cookieParser());

cookie-parser 解析 Cookie 頭並使用 Cookie 名稱作為鍵填充 **req.cookies** 物件。要設定新的 Cookie,讓我們在您的 Express 應用中定義一條新路由,例如:

var express = require('express');
var app = express();

app.get('/', function(req, res){
   res.cookie('name', 'express').send('cookie set'); //Sets name = express
});

app.listen(3000);

要檢查您的 Cookie 是否已設定,只需訪問您的瀏覽器,啟動控制檯並輸入:

console.log(document.cookie);

您將得到類似的輸出(您可能設定了更多 Cookie,可能是由於瀏覽器中的擴充套件程式):

"name = express"

瀏覽器每次查詢伺服器時也會發回 Cookie。要在伺服器控制檯中檢視來自伺服器的 Cookie,請將以下程式碼新增到路由中的伺服器控制檯。

console.log('Cookies: ', req.cookies);

下次您向此路由傳送請求時,您將收到以下輸出。

Cookies: { name: 'express' }

新增帶有過期時間的 Cookie

您可以新增過期的 Cookie。要新增一個過期的 Cookie,只需傳遞一個物件,其中包含將 'expire' 屬性設定為要過期的時間。例如:

//Expires after 360000 ms from the time it is set.
res.cookie(name, 'value', {expire: 360000 + Date.now()}); 

另一種設定過期時間的方法是使用 **'maxAge'** 屬性。使用此屬性,我們可以提供相對時間而不是絕對時間。以下是此方法的一個示例。

//This cookie also expires after 360000 ms from the time it is set.
res.cookie(name, 'value', {maxAge: 360000});

刪除現有 Cookie

要刪除 Cookie,請使用 clearCookie 函式。例如,如果您需要清除名為 **foo** 的 Cookie,請使用以下程式碼。

var express = require('express');
var app = express();

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

app.listen(3000);

在下一章中,我們將瞭解如何使用 Cookie 管理會話。

廣告
© . All rights reserved.