当前位置: 首页 > news >正文

Node.js 中 cookie-parser 依赖详解

解析 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) => {

  // 获取请求中的 Cookie

  const 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) => {

  // 设置一个签名的 Cookie

  res.cookie("signedUsername", "Jane", { signed: true });

  res.send("Signed cookie set successfully");

});

app.get("/get-signed-cookie", (req, res) => {

  // 获取签名的 Cookie

  const 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");

});

相关文章:

  • 一种最常见的js加密解密
  • DeepSeek学术指南:DeepSeek在学术翻译改写能力应用操作案例!
  • Salesforce 检索Layout的设定
  • 深入理解Java中的ConcurrentSkipListMap
  • 【DeepSeek】Mac m1电脑部署DeepSeek
  • #渗透测试#批量漏洞挖掘#Fastjson 1.2.24 远程命令执行漏洞
  • EasyX安装及使用
  • FastDDS示例Windows下编译
  • Android程序自身重启程序的几种方法
  • 手写数字识别的神经网络 2层神经网络的类 代码详解
  • 2.18学习总结
  • Win10环境使用零讯ZeroNews内网穿透实现Deepseek对外服务
  • 解决 nodejs 设置cors 不生效问题
  • 从零开始构建一个小型字符级语言模型的详细教程(基于Transformer架构)之二模型架构设计
  • 修改mysql数据库远程访问
  • 【复现DeepSeek-R1之Open R1实战】系列5:SFT源码逐行深度解析
  • 计算机毕业设计Python商品推荐系统 商品比价系统 电商比价系统 商品可视化(代码+LW文档+PPT+讲解视频)
  • 实现动态翻转时钟效果的 HTML、CSS 和 JavaScript,附源码
  • 【koa】05-koa+mysql实现数据库集成:连接和增删改查
  • gcc和g++的区别以及明明函数有定义为何链接找不到
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实
  • 上海启动万兆光网试点建设,助力“模速空间”跑出发展加速度
  • “20后”比“60后”更容易遭遇极端气候事件
  • 罗氏制药全新生物制药生产基地投资项目在沪启动:预计投资20.4亿元,2031年投产
  • 8小时《大师与玛格丽特》:长度可以是特点,但不是价值标准
  • 青岛双星名人集团董事长发公开信称家人逼迫交出管理权?公司回应