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。