Express.js Cookies
Cookies 是简单的小文件/数据,通过服务器请求发送到客户端并存储在客户端。 每次用户重新加载网站时,此 cookie 都会随请求一起发送。 这有助于跟踪用户的操作。 HTTP Cookie 有多种用途。
- 会话管理
- 个性化(推荐系统)
- 用户跟踪
要在 Express.js 中使用 cookie,我们需要 cookie-parser 中间件。 要安装它,请使用以下命令
$ npm install --save cookie-parser
现在要在 Express 中使用 cookie,我们将需要 cookie 解析器。 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,只需传递一个将属性“过期时间”设置为我们希望它过期的时间的对象。 例如,
res.cookie(name, 'value', {expire: 360000 + Date.now()});
另一种设置过期时间的方法是使用“maxAge”属性。 使用这个属性,我们可以提供相对时间而不是绝对时间。 以下是此方法的示例。
res.cookie(name, 'value', {maxAge: 360000});
删除现有 Cookie
要取消设置 cookie,只需将 cookie 设置为空字符串。 例如,如果需要清除名为 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 来管理会话。