📅  最后修改于: 2023-12-03 15:03:15.053000             🧑  作者: Mango
在 Web 应用程序中,Cookie 是存储在用户浏览器中的数据文件。无论何时用户在浏览器中发出请求,该 Cookie 就会发送回服务器。Cookie 最常用于跟踪用户访问 Web 活动和存储偏好设置。
在 Node.js 中,我们可以使用内置的 http
模块来创建和发送 Cookie。以下代码展示了如何在服务器响应中设置 Cookie:
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {
'Set-Cookie': 'name=Alice; Expires=Wed, 21 Oct 2022 07:28:00 GMT; HttpOnly'
});
res.end('Hello World!\n');
}).listen(3000);
在上面的代码中,Set-Cookie
头用于设置 Cookie。name=Alice
表示 Cookie 名称为 “name”,其值为 “Alice”。在这里,该 Cookie 将在 2022 年 10 月 21 日 07:28:00 GMT 后过期,并且将是只读的,因为我们使用了 HttpOnly
标志。
在发送 Cookie 到浏览器后,当用户再次访问您的网站时,浏览器将自动发送 Cookie。现在我们需要在服务器端读取 Cookie。为此,我们可以使用 request
对象的 headers
属性。
对于上面的代码示例,以下是如何读取 name
Cookie:
const http = require('http');
http.createServer((req, res) => {
const cookie = req.headers.cookie;
if (cookie) {
const name = cookie.replace(/(?:(?:^|.*;\s*)name\s*\=\s*([^;]*).*$)|^.*$/, '$1');
res.end(`Hello ${name}!\n`);
} else {
res.end('Hello World!\n');
}
}).listen(3000);
在上面的代码中,我们检查 req.headers.cookie
属性以查看浏览器是否发送了 Cookie。如果 Cookie 存在,则使用正则表达式从 Cookie 中提取名称和值。
尽管 Node.js 给了我们处理 Cookie 的能力,但是它仍然需要一些手动操作。为了便于 Cookie 的创建和管理,我们可以使用第三方库。以下是一些值得使用的 Cookie 库:
这些库都提供了更简单的方法来处理 Cookie,并且支持更多的功能,例如签名和加密 Cookie。
在 Node.js 中使用 Cookie 是向用户提供个性化 Web 体验的关键之一。通过设置和读取 Cookie,我们可以跟踪用户信息和偏好,以改善用户体验。如果您需要更多的 Cookie 功能,可以考虑使用第三方库。