Node.js 中的 HTTP Cookie


Cookie 是儲存在使用者瀏覽器中的資料,以便快速訪問。例如,每當我們登入任何網站時,伺服器都會返回訪問令牌,該令牌可以與過期時間一起儲存在瀏覽器的 Cookie 中。因此,每當使用者重新訪問網站時,如果儲存在 Cookie 中的訪問令牌尚未過期,則他們無需重複登入網站。

我們還可以在 NodeJS 的伺服器端訪問瀏覽器的 Cookie。之後,我們可以檢查我們正在檢視的 Cookie 中是否存在任何詳細資料,如果不存在,我們可以再次將該資料設定為 Cookie。

在這裡,我們將學習如何使用 NodeJS 訪問、設定和清除 Cookie。

語法

使用者可以按照以下語法使用 NodeJS 設定和獲取 Cookie。

app.get("/", (req, res) => {
   res.cookie("name", value);
});

app.get("/", (req, res) => {
   res.send(req.cookies);
});

在上面的語法中,我們使用 ‘res.cookie()’ 方法在第一個路由中設定 Cookie,並在第二個路由中使用 ‘req.cookies’ 獲取 Cookie。

在使用者開始嘗試以下示例之前,他們應該已經建立了 Node 應用程式。此外,執行以下命令以安裝應用程式的 ‘express’ 和 ‘cookie-parser’ NPM 包。

npm i express cookie-parser

示例

在下面的示例中,我們使用 express 建立了基本的伺服器。此外,我們在 express 應用程式中使用了 ‘cookieParse’。

在執行應用程式後,每當使用者訪問主頁路由時,我們都會顯示歡迎訊息。此外,我們還建立了包含一些屬性的 car 物件。

每當使用者訪問 ‘setcookies’ 路由時,它都會將 car 資料設定為 Cookie。使用者可以訪問 ‘getcookies’ 路由以訪問所有 Cookie。使用者可以訪問 ‘clear’ 路由以清除 Cookie。

let express = require("express");
let cookieParser = require("cookie-parser");
//setup express app
let app = express();

app.use(cookieParser());

//basic route for homepage
app.get("/", (req, res) => {
   res.send("Express app is created successfully, and you are on homepage");
});

// create a JSON object to store car data
let car = {
   name: "BMW",
   model: "X5",
   price: 50000,
};

// route to set car object as cookie
app.get("/setcar", (req, res) => {
   res.cookie("carData", car);
   res.send("car data is stored in cookies");
});

// route to get car object from cookies
app.get("/getcar", (req, res) => {
   res.send(req.cookies);
});

// route to clear car object from cookies
app.get("/clear", (req, res) => {
   res.clearCookie("carData");
   res.send("Cookies are cleared!");
});

//server listens to port 3000
app.listen(8000, (err) => {
   if (err) throw err;
   console.log("listening on port 8000");
});

輸出

示例 2

在下面的示例中,我們設定了帶有過期時間的 Cookie。我們建立了 table 和 homeWindow 物件,這些物件在鍵值對中包含各種屬性。

透過對 ‘setCookies’ 路由發出 get 請求,我們可以使用不同的過期時間設定這兩個物件。此外,使用者可以透過傳遞名稱作為引數來訪問和刪除特定的 Cookie。在輸出中,使用者可以觀察到我們只訪問了 table 物件。

let express = require("express");
let cookieParser = require("cookie-parser");
//setup express app
let app = express();

app.use(cookieParser());

//basic route for homepage
app.get("/", (req, res) => {
   res.send("Express app is created successfully, and you are on homepage");
});

let table = {
   color: "brown",
   material: "wood",
   size: "small",
   price: 100,
};
let homeWindow = {
   color: "white",
   material: "glass",
   size: "big",
   price: 200,
};

// set cookies for table and homeWindow with different expiry time
app.get("/setCookies", (req, res) => {
   res.cookie("table", table, { maxAge: 900000, httpOnly: true });
   res.cookie("homeWindow", homeWindow, { maxAge: 600000, httpOnly: true });
   res.send("Cookies are set with different expiry time");
});

// get cookies
app.get("/getCookies", (req, res) => {
   res.send(req.cookies);
});

// get cookies with specific name
app.get("/getCookies/:name", (req, res) => {
   res.send(req.cookies[req.params.name]);
});

// delete cookies with specific name
app.get("/deleteCookies/:name", (req, res) => {
   res.clearCookie(req.params.name);
   res.send("Cookies with name " + req.params.name + " is deleted");
});

//server listens to port 3000
app.listen(8000, (err) => {
   if (err) throw err;
   console.log("listening on port 8000");
});

輸出

使用者學習瞭如何從 NodeJS 設定和獲取 Cookie。我們使用 res.cookie() 方法設定 Cookie,使用 req.cookies 獲取 Cookie。此外,我們還可以使用 res.clearCookies() 方法清除任何特定或所有 Cookie。

更新於: 2023年4月6日

10K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告