Express 中如何设置 Cookie?

· 约 3 分钟读完 · 第 58 / 120 章

推荐答案

在 Express 中设置 Cookie 可以通过 res.cookie() 方法来实现。以下是一个简单的示例:

在这个示例中,res.cookie() 方法用于设置一个名为 username 的 Cookie,值为 john_doe。maxAge 选项设置了 Cookie 的有效期为 900000 毫秒(即 15 分钟),httpOnly 选项设置为 true,表示该 Cookie 只能通过 HTTP 请求访问,而不能通过 JavaScript 访问。

本题详细解读

1. res.cookie() 方法

res.cookie() 是 Express 提供的一个方法,用于设置 HTTP 响应头中的 Set-Cookie 字段。该方法接受三个参数:

  • name: Cookie 的名称。
  • value: Cookie 的值。
  • options: 可选的配置对象,用于设置 Cookie 的各种属性,如 maxAge、httpOnly、secure 等。

2. 常用选项

  • maxAge: 设置 Cookie 的最大存活时间,单位为毫秒。例如,maxAge: 900000 表示 Cookie 将在 15 分钟后过期。
  • httpOnly: 设置为 true 时,Cookie 只能通过 HTTP 请求访问,而不能通过 JavaScript 访问。这有助于防止跨站脚本攻击(XSS)。
  • secure: 设置为 true 时,Cookie 只能通过 HTTPS 协议传输。
  • domain: 设置 Cookie 的域名。默认情况下,Cookie 的域名为当前页面的域名。
  • path: 设置 Cookie 的路径。默认情况下,Cookie 的路径为 /。
  • expires: 设置 Cookie 的过期时间,接受一个 Date 对象。如果同时设置了 maxAge 和 expires,maxAge 优先级更高。

3. 删除 Cookie

要删除一个 Cookie,可以使用 res.clearCookie() 方法。例如:

res.clearCookie() 方法会删除指定名称的 Cookie。需要注意的是,删除 Cookie 时,path 和 domain 选项必须与设置 Cookie 时一致,否则删除操作将失败。