我遇到了express和ajax會話的問題。我的應用程序通過Ajax接收請求(POST & GET)並設置會話變量。雖然會話工作正常,如果請求不是來自ajax,在相反的情況下,他們只是不工作。例如:node.js表示ajax會話
if (typeof req.session.id == 'undefined'){
req.session.id = 1;
}
else {
req.session.id++;
}
res.send({session:req.session.id});
現在,當我做本地主機:3000 /一切都很好,它增加每次。如果我通過$ http從角度做同樣的事情,我會一直得到1.我在PHP中嘗試過相同的情況,以防萬一有角度出現問題但它工作得很好。請注意,Ajax調用來自本地主機:80
我快速設置:
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:記者:{ 「ID」:7} .oIAoC356/z4fQ ++ iH44N7YxWZWEP49bTHp1h/gpAElY' }
而是來自AJAX來當我得到{}
據我所知,節點/快遞不XHR /非XHR請求區分,除非你明確地改變一些東西。如果您發佈了您的ajax路由的代碼,那可能有助於診斷問題。 – hunterloftis
問題出在端口上,爲了正常工作,我必須在ajax調用中將withCredentials標誌設置爲true。然後在服務器端,我不得不添加res.header('Access-Control-Allow-Credentials','true');一切都很好。 – mbouclas