【发布时间】:2013-11-04 16:20:22
【问题描述】:
无法在请求中获取设置的 cookie。
我用
设置我的 cookieresponse.cookie('name', 'My name');
我想以这种方式获取我的 cookie,以前也可以,但我更改了 express 配置,现在不知道问题出在哪里。
request.cookies is and empty Object
我的快递配置:
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?
};
【问题讨论】:
-
你如何/在哪里打电话给
"singIn"? -
我认为你需要使用 cookieSession 中间件。见stackoverflow.com/a/18510185/446681
-
singIn 在用户使用其主密码和密码唱歌时被调用。在获取用户的所有数据时使用帐户。
-
如果我添加 app.use(express.cookieSession({ cookie: { path: '/', maxAge: 3600000 } }));我收到此错误:XMLHttpRequest 无法加载 127.0.0.1:3000/oauth/sing/in?mail=da@da.da&password=dada。 Access-Control-Allow-Origin 不允许来源localhost:4400。
-
我在 cookieSession 中需要一个秘密:app.use(express.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }}));但仍然没有成功:(
标签: javascript node.js session cookies express