Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js express ajax会话_Ajax_Node.js - Fatal编程技术网

node.js express 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中尝试了同样的方法,

我对express和ajax会话有意见。我的应用程序通过Ajax(POST&GET)接收请求,并设置一个会话变量。虽然如果请求不是来自ajax,会话可以正常工作,但在相反的情况下,它们就是不工作。例如:

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;