解析 HTTP 请求中的 Cookie 的 Node.js 中间件
一、安装
npm install cookie-parser
二、基本使用
const express = require("express");const cookieParser = require("cookie-parser");const app = express();// 使用 cookie-parser 中间件app.use(cookieParser());app.get("/", (req, res) => {// 获取请求中的 Cookieconst cookies = req.cookies;console.log("Cookies:", cookies);res.send("Cookie parsed successfully");});const port = 3000;app.listen(port, () => {console.log(`Server running on port ${port}`);});
二、解析与设置 Cookie
1. 解析 Cookie
`cookie-parser` 会把请求中的 Cookie 解析成一个对象,存储在 `req.cookies` 中。可以通过访问 `req.cookies` 来获取 Cookie 的值。
app.get("/get-cookie", (req, res) => {const username = req.cookies.username;if (username) {res.send(`Hello, ${username}`);} else {res.send("No username cookie found");}});
2. 设置 Cookie
使用 `res.cookie()` 方法可以设置响应中的 Cookie。该方法接受三个参数:Cookie 的名称、值和可选的配置对象。
app.get("/set-cookie", (req, res) => {// 设置一个名为 username 的 Cookie,值为 John,有效期为 1 小时res.cookie("username", "John", { maxAge: 3600000, httpOnly: true });res.send("Cookie set successfully");});
3. 签名 Cookie
`cookie-parser` 支持对 Cookie 进行签名,以确保 Cookie 的完整性和安全性。在初始化 `cookie-parser` 时传入一个密钥,就可以使用签名 Cookie。
const express = require("express");const cookieParser = require("cookie-parser");const app = express();// 使用带有密钥的 cookie-parser 中间件app.use(cookieParser("mysecretkey"));app.get("/set-signed-cookie", (req, res) => {// 设置一个签名的 Cookieres.cookie("signedUsername", "Jane", { signed: true });res.send("Signed cookie set successfully");});app.get("/get-signed-cookie", (req, res) => {// 获取签名的 Cookieconst signedUsername = req.signedCookies.signedUsername;if (signedUsername) {res.send(`Hello, ${signedUsername}`);} else {res.send("No signed username cookie found");}});const port = 3000;app.listen(port, () => {console.log(`Server running on port ${port}`);});
三、清除 Cookie
使用 `res.clearCookie()` 方法可以清除客户端的 Cookie。需要指定要清除的 Cookie 的名称。
app.get("/clear-cookie", (req, res) => {res.clearCookie("username");res.send("Cookie cleared successfully");});