什么是 cookie?
cookie 是由服务器发送到客户端并保存在客户端浏览器上的一小段数据,用于跟踪用户在网站上的活动。cookie 可以包含用户的浏览器信息、网站访问记录、登录状态等信息。
Express.js 中的 cookie 管理
在 Express.js 中,可以使用 cookie-parser
中间件来管理 cookie。cookie-parser
将客户端发送到服务器的 cookie 解析为 JavaScript 对象,并将服务器发送到客户端的 cookie 附加到响应中。
安装 cookie-parser
在使用 cookie-parser
之前,需要先安装它。可以使用以下命令在项目中安装 cookie-parser
:
npm install cookie-parser
使用 cookie-parser
安装完成后,在 Express.js 应用程序中引入 cookie-parser
:
const express = require('express'); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser());
在使用 cookie-parser
后,可以在请求中访问客户端发送的 cookie,或者将 cookie 添加到响应中:
// javascriptcn.com 代码示例 app.get('/', (req, res) => { // 访问客户端发送的名为 'username' 的 cookie const username = req.cookies.username; // 添加名为 'username' 的 cookie 到响应中 res.cookie('username', 'Bob'); res.send('Hello World!'); });
在上面的示例中,req.cookies
是一个 JavaScript 对象,包含客户端发送的所有 cookie。res.cookie
方法用于将 cookie 添加到响应中。第一个参数是 cookie 的名称,第二个参数是 cookie 的值。
设置 cookie 的选项
使用 res.cookie
方法时,可以指定一些选项来配置 cookie 的行为:
maxAge
:cookie 的过期时间(以毫秒为单位)expires
:cookie 的过期日期(Date 对象)path
:cookie 的路径domain
:cookie 的域名secure
:只有在 HTTPS 连接上才能发送 cookiehttpOnly
:禁止客户端 JavaScript 访问 cookie
以下是一个示例,演示如何设置 cookie 的选项:
app.get('/', (req, res) => { // 将名为 'username' 的 cookie 添加到响应中,设置过期时间为 1 小时,路径为 '/' res.cookie('username', 'Bob', { maxAge: 3600000, path: '/' }); res.send('Hello World!'); });
删除 cookie
可以使用 res.clearCookie
方法来删除指定的 cookie:
app.get('/', (req, res) => { // 删除名为 'username' 的 cookie res.clearCookie('username'); res.send('Hello World!'); });
总结
在 Express.js 中使用 cookie-parser
中间件可以方便地管理 cookie。使用 req.cookies
可以访问客户端发送的 cookie,使用 res.cookie
可以将 cookie 添加到响应中。使用 res.clearCookie
可以删除指定的 cookie。在使用 res.cookie
方法时,可以指定一些选项来配置 cookie 的行为。
示例代码
// javascriptcn.com 代码示例 const express = require('express'); const cookieParser = require('cookie-parser'); const app = express(); app.use(cookieParser()); app.get('/', (req, res) => { // 访问客户端发送的名为 'username' 的 cookie const username = req.cookies.username; // 添加名为 'username' 的 cookie 到响应中,设置过期时间为 1 小时,路径为 '/' res.cookie('username', 'Bob', { maxAge: 3600000, path: '/' }); // 删除名为 'username' 的 cookie res.clearCookie('username'); res.send('Hello World!'); }); app.listen(3000, () => { console.log('App listening on port 3000!'); });
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6576e2d4d2f5e1655d0637ae