推荐答案
在 Express 中设置 Cookie 可以通过 res.cookie() 方法来实现。以下是一个简单的示例:
// www.javascriptcn.com code example
const express = require('express');
const app = express();
app.get('/', (req, res) => {
// 设置一个名为 'username' 的 Cookie,值为 'john_doe'
res.cookie('username', 'john_doe', { maxAge: 900000, httpOnly: true });
res.send('Cookie has been set');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});在这个示例中,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() 方法。例如:
app.get('/logout', (req, res) => {
res.clearCookie('username');
res.send('Cookie has been cleared');
});res.clearCookie() 方法会删除指定名称的 Cookie。需要注意的是,删除 Cookie 时,path 和 domain 选项必须与设置 Cookie 时一致,否则删除操作将失败。