Express.js 中使用 cookie-parser 实现 cookie 管理的方法

阅读时长 5 分钟读完

什么是 cookie?

cookie 是由服务器发送到客户端并保存在客户端浏览器上的一小段数据,用于跟踪用户在网站上的活动。cookie 可以包含用户的浏览器信息、网站访问记录、登录状态等信息。

Express.js 中的 cookie 管理

在 Express.js 中,可以使用 cookie-parser 中间件来管理 cookie。cookie-parser 将客户端发送到服务器的 cookie 解析为 JavaScript 对象,并将服务器发送到客户端的 cookie 附加到响应中。

安装 cookie-parser

在使用 cookie-parser 之前,需要先安装它。可以使用以下命令在项目中安装 cookie-parser

使用 cookie-parser

安装完成后,在 Express.js 应用程序中引入 cookie-parser

在使用 cookie-parser 后,可以在请求中访问客户端发送的 cookie,或者将 cookie 添加到响应中:

-- -------------------- ---- -------
------------ ----- ---- -- -
  -- ---------- ---------- - ------
  ----- -------- - ---------------------

  -- ---- ---------- - ------ ----
  ---------------------- -------

  --------------- ---------
---

在上面的示例中,req.cookies 是一个 JavaScript 对象,包含客户端发送的所有 cookie。res.cookie 方法用于将 cookie 添加到响应中。第一个参数是 cookie 的名称,第二个参数是 cookie 的值。

设置 cookie 的选项

使用 res.cookie 方法时,可以指定一些选项来配置 cookie 的行为:

  • maxAge:cookie 的过期时间(以毫秒为单位)
  • expires:cookie 的过期日期(Date 对象)
  • path:cookie 的路径
  • domain:cookie 的域名
  • secure:只有在 HTTPS 连接上才能发送 cookie
  • httpOnly:禁止客户端 JavaScript 访问 cookie

以下是一个示例,演示如何设置 cookie 的选项:

删除 cookie

可以使用 res.clearCookie 方法来删除指定的 cookie:

总结

在 Express.js 中使用 cookie-parser 中间件可以方便地管理 cookie。使用 req.cookies 可以访问客户端发送的 cookie,使用 res.cookie 可以将 cookie 添加到响应中。使用 res.clearCookie 可以删除指定的 cookie。在使用 res.cookie 方法时,可以指定一些选项来配置 cookie 的行为。

示例代码

-- -------------------- ---- -------
----- ------- - -------------------
----- ------------ - -------------------------

----- --- - ----------

------------------------

------------ ----- ---- -- -
  -- ---------- ---------- - ------
  ----- -------- - ---------------------

  -- ---- ---------- - ------ ------------ - ------ ---
  ---------------------- ------ - ------- -------- ----- --- ---

  -- ---- ---------- - ------
  ----------------------------

  --------------- ---------
---

---------------- -- -- -
  ---------------- --------- -- ---- --------
---

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6576e2d4d2f5e1655d0637ae

纠错
反馈