node.js express ajax会话
我对express和ajax会话有意见。我的应用程序通过Ajax(POST&GET)接收请求,并设置一个会话变量。虽然如果请求不是来自ajax,会话可以正常工作,但在相反的情况下,它们就是不工作。例如:node.js express ajax会话,ajax,node.js,Ajax,Node.js,我对express和ajax会话有意见。我的应用程序通过Ajax(POST&GET)接收请求,并设置一个会话变量。虽然如果请求不是来自ajax,会话可以正常工作,但在相反的情况下,它们就是不工作。例如: if (typeof req.session.id == 'undefined'){ req.session.id = 1; } 现在,当我使用localhost:3000/all时,它每次都会递增。如果我通过$http从angular执行同样的操作,我会得到1。我在PHP中尝试了同样的方法,
if (typeof req.session.id == 'undefined'){
req.session.id = 1;
}
现在,当我使用localhost:3000/all时,它每次都会递增。如果我通过$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)
编辑
通过执行控制台日志(req);我注意到,如果不是来自AJAX,我会:
cookies:
{PHPSESSID:'jm2p2kn7etmofrp48s8sv4pu47',
ZDEDebuggerPresent:'php',
'''phtml',
用户_admin:'mtuzonjvb3q6u2ptahjpzmlag8=',
'connect.sess':'s:j:{“id”:7}.oIAoC356/z4fQ++iH44N7YxWZWEP49bTHp1h/gpAElY'
}
但是当我来自AJAX时,我在node.js上得到了{}:
res.header('Access-Control-Allow-Credentials', 'true');
关于ajax:
xhr.withCredentials = true;
据我所知,node/express不会区分XHR请求和非XHR请求,除非您显式更改某些内容。如果您发布ajax路由的代码,这可能有助于诊断问题。问题出在端口,为了使其正常工作,我必须在ajax调用中将withCredentials标志设置为true。然后在服务器端,我必须添加res.header('Access-Control-Allow-Credentials','true');一切都很好,这到底是怎么回事?
xhr.withCredentials = true;