ExpressJS - Cookies
Cookies 是简单的小文件/数据,通过服务器请求发送到客户端并存储在客户端。每次用户重新加载网站时,此 cookie 都会随请求发送。这有助于我们跟踪用户的操作。
以下是 HTTP Cookies 的众多用途 −
- 会话管理
- 个性化(推荐系统)
- 用户跟踪
要将 cookie 与 Express 一起使用,我们需要 cookie-parser 中间件。要安装它,请使用以下代码 −
npm install --save cookie-parser
现在要将 cookie 与 Express 一起使用,我们将需要 cookie-parser。 cookie-parser 是一个中间件,它解析附加到客户端请求对象的 cookie。要使用它,我们将在 index.js 文件中引入它;这可以像使用其他中间件一样使用。在这里,我们将使用以下代码。
var cookieParser = require('cookie-parser'); app.use(cookieParser());
cookie-parser 解析 Cookie 标头并使用以 cookie 名称为键的对象填充 req.cookies。要设置新 cookie,让我们在您的 Express 应用中定义一个新路由,例如 −
var express = require('express'); var app = express(); app.get('/', function(req, res){ res.cookie('name', 'express').send('cookie set'); //Sets name = express }); app.listen(3000);
要检查您的 cookie 是否已设置,只需转到浏览器,启动控制台,然后输入 −
console.log(document.cookie);
您将获得类似输出(您可能由于浏览器中的扩展而设置了更多 cookie)−
"name = express"
浏览器每次查询服务器时也会发回 cookie。要查看来自服务器的 cookie,请在路由中的服务器控制台上,将以下代码添加到该路由。
console.log('Cookies: ', req.cookies);
下次向此路由发送请求时,您将收到以下输出。
Cookies:{ name: 'express' }
添加带有过期时间的 Cookie
您可以添加过期的 Cookie。要添加过期的 Cookie,只需传递一个对象,并将属性"expire"设置为您希望其过期的时间。例如,
//从设置时间起 360000 毫秒后过期。 res.cookie(name, 'value', {expire: 360000 + Date.now()});
设置过期时间的另一种方法是使用 'maxAge' 属性。使用此属性,我们可以提供相对时间而不是绝对时间。以下是此方法的一个示例。
//此 cookie 也会在设置后 360000 毫秒过期。 res.cookie(name, 'value', {maxAge: 360000});
删除现有 Cookie
要删除 cookie,请使用 clearCookie 函数。例如,如果您需要清除名为 foo 的 cookie,请使用以下代码。
var express = require('express'); var app = express(); app.get('/clear_cookie_foo', function(req, res){ res.clearCookie('foo'); res.send('cookie foo cleared'); }); app.listen(3000);
在下一章中,我们将看到如何使用 cookie 来管理会话。