请说明在 Koa 框架中设置 Cookie 的具体方法,并解释其工作原理。
考察说明
考察对 Koa 中 Cookie 操作及其底层机制的理解。
回答思路
- 【回答框架 1】在 Koa 中,可以通过上下文对象 ctx 的 cookies 属性来设置 Cookie,这是 Koa 提供的封装接口。
- 【回答框架 2】使用 ctx.cookies.set(name, value, options) 方法设置 Cookie,其中 name 和 value 是必需参数,options 可以配置 domain、path、maxAge、httpOnly 等属性。
- 【回答框架 3】Koa 的 cookies 属性是基于 cookies 模块实现的,它会解析请求中的 Cookie 并序列化响应的 Set-Cookie 头。
- 【回答框架 4】设置 Cookie 时,options 中的 httpOnly 默认为 true,secure 默认取决于请求协议,expires 和 maxAge 用于控制有效期。
- 【回答框架 5】读取 Cookie 使用 ctx.cookies.get(name, options),可以通过设置 signed 选项来验证签名,防止篡改。
- 【关键点 1】使用 ctx.cookies.set 方法设置 Cookie。
- 【关键点 2】options 支持 domain、path、maxAge、httpOnly 等配置。
- 【关键点 3】Koa 的 cookies 封装了 cookies 模块,自动处理 Set-Cookie 头。
- 【关键点 4】读取 Cookie 用 ctx.cookies.get。
- 【易错点 1】不要手动修改 ctx.response.headers 中的 Set-Cookie,应使用 ctx.cookies.set。
- 【易错点 2】maxAge 单位是毫秒,与 Expires 的日期格式不同,容易混淆。
- 【易错点 3】如果设置 signed 选项,必须初始化 app.keys,否则会报错。