ExpressJS设置/获取/使用Cookie

请求中无法获得设置的cookie。

我设置了我的cookie

response.cookie('name', 'My name'); 

我想以这种方式得到我的cookie,之前它工作,但我改变了快速configuration,我不知道什么似乎是现在的问题。

 request.cookies is and empty Object 

我的快捷configuration:

 var express = require('express'), api = require('./routes/api'); var app = express(); app.configure(function () { app.set('port', process.env.PORT || 3000); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); //app.use(express.bodyParser()); app.use(express.compress()); // New call to compress content app.use(express.cookieParser()); app.use(express.session({secret: 'secret'})); app.use(app.router); app.use(express.methodOverride()); //app.use(express.static(__dirname + '/public')); }); app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); next(); }); app.configure('development', function () { app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function () { app.use(express.errorHandler()); }); 

设置Cookie:

 exports.singIn = function (req, res) { var mail = req.query.mail, password = req.query.password; return user.find({ mail: mail }).then(function (d) { var user = usersData(u); res.cookie('mail', user.mail, { maxAge: 900000}); res.cookie('password', crypted, { maxAge: 900000}); res.json({ user: user }); return { user: user } }).catch(function () { res.json(400, {"error-tag": "error-sing-in"}); return {"error-tag": "error-sing-in"}; }); }; 

获取Cookie:

 exports.account = function (req, res) { var mail = req.cookies.mail, password = req.cookies.password; //here req.cookies is an empty object. I don't know why? }; 

2017年的答案..

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

从传入的请求获取cookie

 let cookie = req.cookies['cookiename']; 

设置一个响应cookie(这个cookie将被发送到所有未来的传入请求,直到删除或到期)。

 res.cookie('cookiename', 'cookievalue', { maxAge: 86400 * 1000, // 24 hours httpOnly: true, // http only, prevents JavaScript cookie access secure: true // cookie must be sent over https / ssl }); 

删除响应cookie

 res.cookie('cookiename', 'cookievalue', { maxAge: 0 });