关于express cookie-parse npm包以及如何在客户端的Web浏览器上设置cookie

关于express cookie-parse npm包以及如何在客户端的Web浏览器上设置cookie

我们可以使用cookie在Web浏览器中存储用户的信息。例如,每当用户在浏览器中打开任何网站时,它会向服务器请求一些信息,一旦客户端获取到信息,它会将其存储在浏览器中,并设置过期时间。

这使得用户访问网站时更快,因为它不需要每次用户返回网站时都向服务器请求信息。然而,一旦cookie过期,客户端会再次向服务器请求该信息。

在本教程中,我们将学习关于express cookie-parse npm包以及如何在客户端的Web浏览器上设置cookie。

使用cookie-parser NPM包设置和获取cookie

用户可以按照以下步骤创建一个Node项目。

  • 步骤1 - 首先,用户需要在本地计算机上下载并安装Node JS。

  • 步骤2 - 创建一个新的项目文件夹,并在该目录中打开终端。

  • 步骤3 - 在项目目录的终端中输入以下命令来启动新的Node项目。

npm init -y
  • 步骤4 - 现在,用户需要安装所需的npm包。第一个必需的包是express,另一个是cookie-parser。用户可以执行以下命令将npm包下载到当前项目中。
npm i express cookie-parser
  • 步骤5 - 接下来,我们需要设置用于 node 服务器的服务器代码。

用户可以在项目目录中创建一个新的 server.js 文件,并添加以下代码。

// importing the express package
const express = require("express");

// using the express for app
const app = express();
app.get("/", (req, res) => {
   res.send("Welcome to the new server!");
});

// setting up the port for the server
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});
  • 步骤6 - 现在,用户需要运行项目,为此,用户可以在终端中输入以下命令。
node server.js

服务器成功启动,当用户访问 http://localhost:5000/ URL 时,他们可以看到下面的输出。

我们已经搭建好了Node项目。我们需要编写代码来使用cookie parser NPM包处理签名和未签名的cookie。

cookie-parse包的方法

在我们开始编写使用cookie parser处理cookie的代码之前,让我们了解一下它包含的方法。

cookieParser(key, cookieOptions)

用户可以使用cookieParse()方法创建一个新的中间件。它接受一个密钥和cookie选项作为参数,但两者都是可选的。如果我们传递一个密钥,它将解析cookie作为已签名的cookie;否则,解析为未签名的cookie。

此外,用户可以使用request.cookie来解析未签名的cookie,使用request.signedCookies来解析已签名的cookie。

cookieParser.JSONCookie(string)

如果我们将一个JSON对象设为cookie,JSONCookie()方法将返回JSON对象;否则,返回普通的字符串值。

cookieParser.JSONCookies(Cookies_to_store)

Cookies_to_store是一个对象。所以,当我们将该对象作为JSONCookies()方法的参数传递时,它会迭代对象的每个键-值对,解析每个键的值,并用解析后的值替换它。

cookieParser.signedCookie(string, key)

我们可以使用signedCookie()方法来获取解析后的未签名cookie。如果密钥无效,该方法会引发错误。此外,如果cookie未经过签名,该方法将返回普通的未签名值。

cookieParser.signedCookies(Cookies_to_store, key)

这里,Cookies_to_Store又是一个对象,用户可以使用signedCookies()方法来迭代对象的每个值,并解析每个值的签名cookie(如果密钥有效)。它返回一个带有解析后的值的新cookie对象。

注意 :仅在服务器处于生产模式时,用户才能看到cookie的输出。同时,用户可以使用在线nodeJS编辑器查看输出结果。

示例 – 未签名的cookie

在下面的示例中,我们发送cookie到浏览器,而没有使用cookie-parser中间件。我们使用send()方法将cookie发送到浏览器。

const express = require("express");
const parser = require("cookie-parser");
const app = express();
app.get("/cookie", (request, response) => {

   // sending the unassigned cookies
   response.cookie("message", "This is a cookie.").send();
   console.log("The cookies are " + request.cookies);
});
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});

示例 – 签名的 cookies

在下面的示例中,我们使用了 cookie-parser 中间件生成了签名密钥。用户可以看到我们如何使用 secret_key 初始化中间件。此后,我们添加了 {signed: true} 对象作为 cookie() 方法的参数,以发送签名的 cookies。

const express = require("express");
const parser = require("cookie-parser");
const app = express();

// Initializing the middleware with a secret key
app.use(parser("secret_key"));

app.get("/cookie", (request, response) => {
   // sending the signed cookies
   response
   .cookie("message", "This is a singed cookie", { signed: true })
   .send();

   // using the signedCookies property to access cookies
   console.log("The cookies are " + request.signedCookies);
});
app.listen(5000, (err) => {
   console.log("Server started successfully on port 5000");
});

我们在本教程中学习了如何发送有签名和无签名的Cookie。签名和无签名Cookie之间的主要区别是密钥。我们在使用签名Cookie时需要提供一个密钥,并且我们需要使用这个密钥来访问它们。

要设置无签名Cookie,用户不需要使用cookie解析器作为中间件,并且也不需要使用密钥。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程