什么时候使用快速会话创build一个cookie?

我在一个项目中使用快速会话,并且很努力的去理解它何时在浏览器上创build一个cookie来与会话存储一起使用。

在我的项目中,当我请求我的主页(“/”)时,不会创buildcookie,但是当我请求任何其他页面时,会创build一个cookie。 如果我远离主页(即“/ user / signup”),请从浏览器中删除cookie,然后返回主页,但不会为会话存储创buildcookie。

我的问题是理解为什么它会为除主页以外的其他请求创build一个会话cookie。

var app = express(); app.use(express.static(path.join(__dirname, 'public'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(validator()); app.use(cookieParser()); app.use(session({ secret: 'mysupersecret', resave: false, saveUninitialized: false, store: new mongoStore({ mongooseConnection: mongoose.connection }), cookie: {maxAge: 180 * 60 *1000} })); app.use(flash()); app.use(passport.initialize()); app.use(passport.session()); app.use('/user', userRoutes) app.use('/', indexRoutes); router.get('/', function(req, res, next) { Product.find(function(err, docs){ if(err){ console.log(err); } else { var prodRows = []; var rowLength = 3; for(var i = 0; i < docs.length; i += rowLength){ prodRows.push(docs.slice(i, i + rowLength)) }; res.render('shop/index', { title: 'Shopping Cart', prods: prodRows}); } }); }); router.get('/user/signin', function(req, res, next){ console.log('Session2: ', req.session); console.log('Cookies2: ', req.cookies); var messages = req.flash('error'); console.log('Session3: ', req.session); console.log('Cookies3: ', req.cookies); res.render('user/signin', { csrfToken: req.csrfToken(), messages: messages, hasErrors: messages.length > 0}); }); 

任何帮助将非常感激。

您在主页上没有收到Cookie,因为“saveUninitialized”设置为“false”。 当您导航到您的主页会话创build,但它永远不会被修改,因此从来没有保存。 如果将“saveUninitialized”设置为“true”,那么将保存是否有任何修改,这将解决您的问题。