关于Express的cookie-parser

在浏览器中打开http://localhost:3000之后就一直在转,不显示任何信息,求解答,谢谢大家

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

app.use(cookieParser);
app.get('/',function (req,res)
{
    // 如果请求中的 cookie 存在 isVisit, 则输出 cookie
    // 否则,设置 cookie 字段 isVisit, 并设置过期时间为1分钟
    if (req.cookies.isVisit) {
     console.log(req.cookies);
     res.send("再次欢迎访问");
     }
    else {
     res.cookie('isVisit', 1, {maxAge: 60 * 1000});
     res.send("欢迎第一次访问");
     }
    res.send('Hello');

});

var server = app.listen(3000,function()
{


    var host = server.address().address;
    var port = server.address().port;

    console.log('The App running at://%s:%s',host,port);
});
阅读 3k
1 个回答

https://github.com/expressjs/...

你的

app.use(cookieParser)

改为

app.use(cookieParser())

...貌似就可以了= =
源码部分如下,应该蛮容易理解的

function cookieParser(secret, options) {
  return function cookieParser(req, res, next) {
    if (req.cookies) {
      return next();
    }

    var cookies = req.headers.cookie;
    var secrets = !secret || Array.isArray(secret)
      ? (secret || [])
      : [secret];

    req.secret = secrets[0];
    req.cookies = Object.create(null);
    req.signedCookies = Object.create(null);

    // no cookies
    if (!cookies) {
      return next();
    }

    req.cookies = cookie.parse(cookies, options);

    // parse signed cookies
    if (secrets.length !== 0) {
      req.signedCookies = signedCookies(req.cookies, secrets);
      req.signedCookies = JSONCookies(req.signedCookies);
    }

    // parse JSON cookies
    req.cookies = JSONCookies(req.cookies);

    next();
  };
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题