我在使用Express和Ajax的时候遇到了问题。我的应用程序通过Ajax(POST和GET)接收请求并设置会话变量。如果请求不是通过Ajax发出的,则会话正常工作。相反,如果是通过Ajax发出的请求,则会话就无法正常工作。例如:
if (typeof req.session.id == 'undefined'){
req.session.id = 1;
}
else {
req.session.id++;
}
res.send({session:req.session.id});
现在当我访问 localhost:3000/ 时,一切正常,它每次都会自增。但如果我通过 $http 在 Angular 中执行相同的操作,我始终得到 1。我尝试了 PHP 中的相同操作,以防 Angular 出现问题,但它可以正常工作。请注意,此 AJAX 调用来自 localhost:80。
我的 Express 设置:
app.use(express.bodyParser());
app.use(express.cookieParser('secret'));
app.use(express.cookieSession({secret:'mySecret'}));
app.use(express.session({store:new express.session.MemoryStore(),maxAge : new Date(Date.now() + 3600000)}));
app.use(app.router)
编辑
通过执行console.log(req);,我注意到当不是来自AJAX时,我会得到:
cookies:
{ PHPSESSID: 'jm2p2kn7etmofrp48s8sv4pu47', ZDEDebuggerPresent: 'php', '': 'phtml', user_admin: 'MTUzOnJvb3Q6U2ptaHJpZmllaG8=', 'connect.sess': 's:j:{"id":7}.oIAoC356/z4fQ++iH44N7YxWZWEP49bTHp1h/gpAElY' }
但是当从AJAX获取时,我得到了{}。