मैं क्रेडेंशियल और प्रीफलाइट अनुरोध के साथ सीओआरएस लागू कर रहा हूं और मैं थोड़ा सा रहस्यमय हूं कि क्यों प्रीफलाइट अनुरोध फ़ायरफ़ॉक्स 30 में लगातार विफल रहता है लेकिन सफारी (7.0.2) और क्रोम 35 में काम करता है। मुझे लगता है कि यह समस्या " Why does the preflight OPTIONS request of an authenticated CORS request work in Chrome but not Firefox? "क्योंकि मैं एक 401, बल्कि ब्राउज़र क्लाइंट से एक CORS विशेष संदेश नहीं मिल रहा है:यह CORS अनुरोध केवल फ़ायरफ़ॉक्स में विफल क्यों है?
" क्रॉस-उत्पत्ति अनुरोध ब्लॉक किया गया:। एक ही मूल नीति http://myurl.dev.com पर दूरस्थ संसाधन पढ़ने की अनुमति नहीं देता यह हो सकता है संसाधन को उसी डोमेन पर ले जाकर या सीओआरएस सक्षम करके तय किया गया है। "
सर्वर पर:: विकल्प प्रतिक्रिया के लिए
हेडर:
- पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति
स्रोत कोड दिखा बिना, यहाँ मैं क्या कर रहा हूँ : [[यहां अनुरोध से मूल प्रतिलिपि]]
पोस्ट प्रतिक्रिया के लिए हेडर:
- Access- नियंत्रण-अनुमति दें-मूल: [[अनुरोध से मूल कॉपी यहाँ]]
- पहुंच-नियंत्रण-अनुमति दें-क्रेडेंशियल: "सही"
ब्राउज़र क्लाइंट में:
jQuery.ajax({
url: requestUrl,
type: 'POST',
data: getData(),
xhrFields: {
withCredentials: true
}
});
कल्पना के अनुसार, यह एक विकल्प preflight अनुरोध है जो अपने जवाब में CORS हेडर की जरूरत ट्रिगर किया जाएगा। मैंने कई बार डब्ल्यू 3 सी स्पेक के माध्यम से पढ़ा है और मैं पहचान नहीं सकता कि मैं क्या कर रहा हूं, अगर कुछ भी है, तो उस प्रीफलाइट प्रतिक्रिया में।
वास्तविक अनुरोध/प्रतिक्रियाओं और/या कृपया दिखाने के एक डेमो पेज प्रदान करते हैं। अभी, पर्याप्त विवरण नहीं हैं और यह कहना असंभव लगता है कि चीज़ें कहां गलत होती हैं। – nmaier
क्या आप पुष्टि कर सकते हैं कि OPTIONS रिटर्न कोड 200? – kojo
मैंने इस मुद्दे को हल किया। ऐसा लगता है कि फ़ायरफ़ॉक्स एक्सेस-कंट्रोल-स्वीट-विधियों की सूची को अल्पविराम से सीमित करने की अपेक्षा करता है। मैंने इसे "पोस्ट, प्राप्त, विकल्प" में बदल दिया और यह जादुई रूप से काम करना शुरू कर दिया। मैंने https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS को ध्यान से पढ़कर इसे समझ लिया –