ExpressJS - Cookie


Cookie 是简单的小文件/数据,通过服务器请求发送到客户端并存储在客户端。每次用户重新加载网站时,此 cookie 都会随请求一起发送。这有助于我们跟踪用户的操作。

以下是 HTTP Cookie 的多种用途 -

  • 会话管理
  • 个性化(推荐系统)
  • 用户追踪

要在 Express 中使用 cookie,我们需要 cookie 解析器中间件。要安装它,请使用以下代码 -

npm install --save cookie-parser

现在要在 Express 中使用 cookie,我们需要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”设置为您希望其过期的时间的对象。例如,

//Expires after 360000 ms from the time it is set.
res.cookie(name, 'value', {expire: 360000 + Date.now()}); 

设置过期时间的另一种方法是使用“maxAge”属性。利用这个属性,我们可以提供相对时间而不是绝对时间。以下是此方法的示例。

//This cookie also expires after 360000 ms from the time it is set.
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 来管理会话。