2013-01-19 14 views
8

मुझे एक्सप्रेस और 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 (अनुरोध) करके; मैं देखा है कि जब AJAX से नहीं आ रही मैं मिलता है:

cookies: 

{PHPSESSID: 'jm2p2kn7etmofrp48s8sv4pu47', ZDEDebuggerPresent: 'php', '': 'phtml', user_admin: 'MTUzOnJvb3Q6U2ptaHJpZmllaG8 =', ' connect.sess ': की: j: { "id": 7} .oIAoC356/z4fQ ++ iH44N7YxWZWEP49bTHp1h/gpAElY' }

लेकिन जब AJAX से आ रही मैं मिल {}

+0

जहाँ तक मुझे पता है, नोड/व्यक्त एक्सएचआर/गैर एक्सएचआर अनुरोधों के बीच अंतर नहीं है जब तक आप स्पष्ट कुछ बदल जाते हैं। यदि आप अपने AJAX मार्ग के लिए कोड पोस्ट करते हैं, तो समस्या का निदान करने में सहायता मिल सकती है। – hunterloftis

+0

समस्या ठीक से काम करने के लिए बंदरगाह में थी, मुझे AJAX कॉल पर सत्य के साथ प्रमाण पत्र ध्वज सेट करना पड़ा। फिर सर्वर की तरफ, मुझे res.header ('एक्सेस-कंट्रोल-अनुमति-प्रमाण-पत्र', 'सत्य') जोड़ना पड़ा; और सब ठीक है। – mbouclas

उत्तर

7
Node.js पर

:

res.header('Access-Control-Allow-Credentials', 'true'); 
ajax पर

:

xhr.withCredentials = true; 
+1

यह वास्तव में क्या करता है? –

संबंधित मुद्दे