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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告