推荐答案
在 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 的过期时间。如果同时设置了maxAge
和expires
,maxAge
优先。 - path: 字符串,表示 Cookie 的路径。默认为
'/'
,表示该路径下的所有页面都可以访问该 Cookie。 - domain: 字符串,表示 Cookie 的域名。默认为当前域名。
- secure: 布尔值,默认为
false
。如果设置为true
,则 Cookie 只能通过 HTTPS 协议传输。
3. 示例代码解析
在示例代码中,我们创建了一个 Koa 应用,并在中间件中使用 ctx.cookies.set()
方法设置了一个名为 name
的 Cookie。该 Cookie 的值为 'Koa'
,并且配置了 httpOnly
、maxAge
和 signed
选项。
httpOnly: true
表示该 Cookie 只能通过 HTTP 请求访问,无法通过 JavaScript 访问。maxAge: 1000 * 60 * 60 * 24
表示该 Cookie 的有效期为 1 天。signed: true
表示该 Cookie 会被签名,防止客户端篡改。
最后,服务器会返回一个简单的响应 'Cookie has been set'
,表示 Cookie 已经成功设置。