Express.js Cookies怎么用?如何在Express中设置和读取Cookie?

文章导读
Previous Quiz Next Cookies 是简单的小型文件/数据,随着服务器请求发送到客户端,并在客户端存储。每次用户重新加载网站时,此 cookie 会随请求一起发送。这有助于我们跟踪用户的操作。
📋 目录
  1. 添加带有过期时间的 Cookies
  2. 删除现有 Cookies
A A

ExpressJS - Cookies



Previous
Quiz
Next

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

HTTP Cookies 的众多用途如下 −

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

要在 Express 中使用 cookies,我们需要 cookie-parser 中间件。要安装它,请使用以下代码 −

E:\Dev\hello-world>npm install --save cookie-parser
up to date, audited 128 packages in 2s

20 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

现在要在 Express 中使用 cookies,我们需要引入 cookie-parsercookie-parser 是一个中间件,它解析附加到客户端请求对象的 cookies。要使用它,我们需要在 index.js 文件中引入它;它可以像使用其他中间件一样使用。这里,我们使用以下代码。

var cookieParser = require('cookie-parser');
app.use(cookieParser());

cookie-parser 解析 Cookie 头部,并用以 cookie 名称为键的对象填充 req.cookies。要设置一个新的 cookie,让我们在 Express 应用中定义一个新路由,如下所示 −

index.js

var express = require('express');
var app = express();

var cookieParser = require('cookie-parser');
app.use(cookieParser());

app.get('/', function(req, res){
   res.cookie('name', 'express').send('cookie set'); //设置 name = express
});

app.listen(3000);

要检查 cookie 是否已设置,只需打开浏览器,启动控制台,并输入 −

console.log(document.cookie);

你将得到如下输出(你可能有更多 cookies,可能由于浏览器扩展)−

Cookie

浏览器每次查询服务器时也会发送回 cookies。要从服务器查看 cookies,请在服务器控制台的某个路由中添加以下代码。

console.log('Cookies: ', req.cookies);

下次你向此路由发送请求时,将收到以下输出。

Cookies: { name: 'express' }

添加带有过期时间的 Cookies

你可以添加会过期的 cookies。要添加一个会过期的 cookie,只需传递一个带有 'expire' 属性设置为你希望它过期时间的对象。例如,

//从设置时起 360000 ms 后过期。
res.cookie(name, 'value', {expire: 360000 + Date.now()}); 

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

//此 cookie 也从设置时起 360000 ms 后过期。
res.cookie(name, 'value', {maxAge: 360000});

删除现有 Cookies

要删除 cookie,请使用 clearCookie 函数。例如,如果你需要清除名为 foo 的 cookie,请使用以下代码。

index.js

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);

在下一章中,我们将看到如何使用 cookies 来管理会话。