ExpressJS Cookies

  • Cookies

    Cookies是简单的小文件/数据,随服务器请求发送到客户端并存储在客户端。每次用户重新加载网站时,该cookie都会与请求一起发送。这有助于我们跟踪用户的操作。以下是HTTP Cookies的多种用途-
    • 会话管理
    • 个性化(推荐系统)
    • 用户跟踪
    要将Cookie与Express一起使用,我们需要cookie-parser中间件。要安装它,请使用以下代码-
    
    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.cookie。要设置新的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 = lifeng"
    
    浏览器每次查询服务器时也会发送回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来管理会话