我正面临一个问题,即在使用Bluebird承诺进行一些请求调用之后,我试图在我的中间件中设置cookie值,但是我收到的错误是"错误:在发送标题后不能设置标题",
我的代码是
User.autoLogin(req, cookieToken).then(function(apiResponse) {
console.log("Autologin response");
console.log(apiResponse.autologin);
return apiResponse.autologin;
}).then(function(apiResponse) {
if (apiResponse.success === true) {
var returnUser = {};
returnUser = apiResponse.metadata.user;
returnUser.isUser = 1;
returnUser.cartItemsCount = apiResponse.metadata.no_of_items_cart || 0;
returnUser.checkoutStep = 2;
var upSesReq = {
"Al": "1",
"userId": returnUser.id_customer
};
var sessUpdate = User.updateSession(req, upSesReq);
sessUpdate.then(function(sesRes) {
console.log(sesRes);
if (sesRes.success === true) {
req.logIn(returnUser, function (err) {
if (err) {
console.log(err);
forceLogout = true;
logError(err);
} else {
forceLogout = false;
/*
UserEvents.on('loginSuccess', function(req, res){
UserActivityListener.setAutoLoginCookie(req, res);
});
*/
console.log("Auto Login succcessful");
sails.log.verbose("Autologin success full for User");
req.session.totalJabongCredit = returnUser.total_store_credits || 0;
var expirationTime = new Date(Date.now() + (180 * 24 * 60 * 60 * 1000));
res.cookie('xxxx', req.session.token, { expires: expirationTime, httpOnly: true });
autologin = true;
//UserActivityListener.setAutoLoginCookie(req, res);
//UserEvents.loginSuccess(req, res);
}
});
console.log("After login session");
console.log(req.session);
console.log("After login session");
} else {
if (!isEmpty(sesRes.err)) {
logError(sesRes.err);
forceLogout = true;
} else {
logError(sesRes.message);
forceLogout = true;
}
}
}).catch(function(err) {
logError(err);
forceLogout = true;
});
}
}).error(function(err) {
logError(err);
forceLogout = true;
}).catch(function(err) {
logError(err)
forceLogout = true;
});
我在尝试设置Cookie时遇到错误。在我的autoLogin调用中,我调用了一些apis,并根据结果,这是我要继续的承诺对象。我没有在我的方法中使用res.end()像AutoLogin。请告诉我究竟是什么导致了这个问题?
答案 0 :(得分:1)
看起来有些事情发生在:
var sessUpdate = User.updateSession(req, upSesReq);
与
并行运行sessUpdate.then(function(sesRes) {
.....
}