2012-06-11 34 views
15

मुझे लगता है कि मैंने xmlhttprequest के साथ कुकीज़ के प्रबंधन को गलत समझा। मेरे पास एक सर्वर है जो जावास्क्रिप्ट में बनाए गए XMLHttpRequest पर प्रतिक्रिया करता है, मेरा सर्वर Allow-Control-Access-Origin, Access-Control-Allow-Headers, Access-Control-Expose-Headers और Access-Control-Allow-Credentials सही मान वाले शीर्षलेख देता है।xmlhttprequest और set-cookie और कुकी

मैं जावास्क्रिप्ट के साथ एक सर्वर में एक डाइजेस्ट प्रमाणीकरण कर रहा हूं, इसमें कोई समस्या नहीं है, मुझे सर्वर से WWW-Authenticate हेडर ठीक है, मैं प्रक्रिया करता हूं और सर्वर को सभी पाचन प्रतिक्रिया के साथ प्राधिकरण शीर्षलेख भेजता हूं और सब कुछ ठीक करता है । समस्या यह है कि, जब पाचन-चुनौती सफल होती है, तो मेरा सर्वर सेट-कुकी हेडर देता है, मुझे इसे प्राप्त करना होगा और मेरे सभी एक्सएच अनुरोध में जोड़ना होगा। ब्राउज़र (क्रोमियम और क्रोम का उपयोग) मेरे कर हैडर के लिए उपयोग नहीं:

xhr.getResponseHeader("Set-Cookie"); 

ठीक है, XMLHTTPREQUEST Level 2 में यह कहते हैं: "प्रतिक्रिया से रिटर्न सभी हेडर, उन के अपवाद जिसका क्षेत्र का नाम है के साथ सेट-कुकी या सेट-कुकी 2 " ठीक है, इसलिए मैं इसे नहीं ले सकता, लेकिन क्या तरीके हैं? कुकीज के लिए क्रोम एपी का उपयोग करना (फिलहाल मैं इसके बारे में नोटिंग नहीं पढ़ता), लेकिन मैं मानक तरीके से मानक के रूप में करना चाहता हूं। के साथ:

xhr.withCredentials = true; 

मतलब यह है कि ब्राउज़र अपने आप सेट कुकी हो और कुकी हेडर में भेज ??

उत्तर

16

CORS कल्पना http://www.w3.org/TR/cors/#make-a-request-steps से:

जब भी कर एक अनुरोध चरणों लागू होते हैं, लाने के मैनुअल रीडायरेक्ट ध्वज सेट के साथ मूल स्रोत मूल से अनुरोध यूआरएल, और ब्लॉक कुकीज़ ध्वज सेट करता है, तो न आना साख झंडा सेट है विधि अनुरोध विधि, इकाई निकाय अनुरोध इकाई निकाय का उपयोग करें, जिसमें लेखक अनुरोध शीर्षलेख शामिल हैं, और यदि उपयोगकर्ता प्रमाणीकरण ध्वज अनसेट हो तो उपयोगकर्ता प्रमाण-पत्र शामिल करें। यदि स्रोत मूल वैश्विक स्तर पर अद्वितीय पहचानकर्ता है तो रेफरर हेडर को बहिष्कृत करें।

जैसा कि आप सही ढंग से कहते हैं - यदि आप withCredentials का उपयोग करते हैं तो कुकीज़ ब्राउज़र द्वारा जोड़े जाते हैं।

+0

क्या आप इस बात की पुष्टि कर सकते हैं कि इस मामले में वे कुकीज़ बी भेज रहे हैं और साइट ए (मुख्य पृष्ठ) साइट बी (अजाक्स गंतव्य) पर सेट कर रहे हैं? –

+0

नहीं। केवल उन कुकीज़ जो डोमेन बी से उत्पन्न हुई थीं वहां भेजी जाएंगी। दूसरी तरफ, 'रेफरर' को साइट ए के मूल यूआरआई युक्त भेजा जाएगा - और यदि आपके पास कुछ HTTP पैरामीटर थे - वे बी साइट पर दिखाई देंगे। –