2013-07-27 11 views
7

मैं jQuery.ajax() का उपयोग कर एक क्रॉस उत्पत्ति प्राप्त करने का प्रयास कर रहा हूं। मेरा सर्वर ऐसे अनुरोधों को स्वीकार करने के लिए कॉन्फ़िगर किया गया है।वेबकिट ब्राउज़र मुझे सीओआरएस प्रीफलाइट हेडर सेट करने की अनुमति नहीं देंगे

पहुंच-नियंत्रण-अनुरोध-विधि

पहुंच-नियंत्रण-अनुरोध-हेडर

असुरक्षित हैडर सेट करने के लिए इनकार कर दिया "पहुंच-नियंत्रण-अनुरोध: क्रोम मुझे हेडर भेजने के लिए अनुमति नहीं दी जाएगी

$.ajax({ 
    type:"GET", 
    headers: { 
     'Access-Control-Request-Method' : 'GET', 
     'Access-Control-Request-Headers': 'X-Custom' 
    },  
    url: "http://localhost:3000",  
    success: function(msg) { 
     console.log(msg); 
    } 
}); 
0123: - विधि "< त्रुटि संदेश

यहाँ मेरी ajax अनुरोध है

मैं उम्मीद कर रहा था कि इन शीर्षकों को ब्राउजर को सर्वर से बातचीत करने के लिए प्री-फ्लाइट अनुरोध (विकल्प) बनाने का कारण बनें। मुझे पता है कि मैंने इसे पहले पूरा कर लिया है। क्या कोई मुझे बता सकता है कि मैं क्या भूल रहा हूँ?

बहुत बहुत धन्यवाद!

+1

'एक्सेस-कंट्रोल-एक्सपोज़र-हेडर' सेट जो भी हो, जैसे 'x-json' – Ohgodwhy

+0

क्या? वह एक हेडर नहीं है जिसे मैं भेजना चाहता हूं। क्या आप कृपया विस्तृत कर सकते हैं? – Nick

+2

यह एक कामकाज है। आप देखते हैं, जब आप क्रॉस-डोमेन अनुरोध करना चाहते हैं तो प्रीफलाइट अनुरोध स्थापित किया जाता है। प्रीफलाइट सर्वर की जांच करेगा कि 'विकल्प' क्या उपलब्ध हैं, और हेडर को इस प्रकार वापस कर दें। प्रीफलाइट पूरा होने तक, अनुरोध क्रॉस साइट जालसाज़ी से बचने के लिए वेबकाइट आधारित ब्राउज़र में हल नहीं होगा। [आप इसके बारे में यहां और अधिक पढ़ सकते हैं] (https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control) – Ohgodwhy

उत्तर

0

एक प्रीफ्लैट विकल्प अनुरोध स्वचालित रूप से क्रॉस डोमेन अनुरोध पर होता है यदि अनुरोध एक आसान अनुरोध नहीं है। एक साधारण अनुरोध आमतौर पर एक जीईटी अनुरोध है। इस प्रकार यदि आप एक क्रॉस डोमेन जीईटी अनुरोध करते हैं तो प्रीफलाइट विकल्प अनुरोध नहीं होंगे।

हालांकि, यदि आप एक क्रॉस डोमेन पोस्ट अनुरोध करते हैं, तो ब्राउज़र आपको ऐसा करने के निर्देश दिए बिना, प्रीफलाइट विकल्प अनुरोध पहले करें। इस अनुरोध का उद्देश्य यह देखना है कि सर्वर आपके क्लाइंट के डोमेन/आईपी से क्रॉस-डोमेन POST अनुरोधों को अनुमति देता है या नहीं।

यदि आपके सर्वर में प्रतिक्रिया में सही "एक्सेस-कंट्रोल" हेडर हैं, तो कहें, हाँ इस क्लाइंट को क्रॉस डोमेन पोस्ट अनुरोध करने की अनुमति है, तो ब्राउज़र POST अनुरोध करने के लिए आगे बढ़ेगा। यदि आपका सर्वर नहीं कहता है (क्योंकि आपके सर्वर पर "एक्सेस-कंट्रोल" हेडर गलत हैं) तो ब्राउजर इसका सम्मान करेगा और दूसरा POST अनुरोध नहीं करेगा।

अधिक जानकारी के लिए https://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request देखें।

इसके अलावा, आपको यह सुनिश्चित करना होगा कि आपका सर्वर आने वाले विकल्प अनुरोधों को संभालने के लिए सेट है।

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