关于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解析器作为中间件,并且也不需要使用密钥。