Koa 面试题 目录

Koa 中如何设置 Cookie?

推荐答案

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

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

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

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

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

本题详细解读

1. ctx.cookies.set() 方法

ctx.cookies.set() 是 Koa 中用于设置 Cookie 的方法。它接受三个参数:

  • name: Cookie 的名称,类型为字符串。
  • value: Cookie 的值,类型为字符串。
  • options: 可选的配置对象,用于设置 Cookie 的各种属性。

2. 常用 options 配置

  • httpOnly: 布尔值,默认为 false。如果设置为 true,则 Cookie 只能通过 HTTP 请求访问,无法通过 JavaScript 访问,增强了安全性。
  • maxAge: 数字,表示 Cookie 的有效期(以毫秒为单位)。例如,maxAge: 1000 * 60 * 60 * 24 表示 Cookie 的有效期为 1 天。
  • signed: 布尔值,默认为 false。如果设置为 true,则 Cookie 会被签名,防止客户端篡改。
  • expires: Date 对象,表示 Cookie 的过期时间。如果同时设置了 maxAgeexpiresmaxAge 优先。
  • path: 字符串,表示 Cookie 的路径。默认为 '/',表示该路径下的所有页面都可以访问该 Cookie。
  • domain: 字符串,表示 Cookie 的域名。默认为当前域名。
  • secure: 布尔值,默认为 false。如果设置为 true,则 Cookie 只能通过 HTTPS 协议传输。

3. 示例代码解析

在示例代码中,我们创建了一个 Koa 应用,并在中间件中使用 ctx.cookies.set() 方法设置了一个名为 name 的 Cookie。该 Cookie 的值为 'Koa',并且配置了 httpOnlymaxAgesigned 选项。

  • httpOnly: true 表示该 Cookie 只能通过 HTTP 请求访问,无法通过 JavaScript 访问。
  • maxAge: 1000 * 60 * 60 * 24 表示该 Cookie 的有效期为 1 天。
  • signed: true 表示该 Cookie 会被签名,防止客户端篡改。

最后,服务器会返回一个简单的响应 'Cookie has been set',表示 Cookie 已经成功设置。

纠错
反馈