उसी डोमेन पर कोर त्रुटि?


86

मैं अभी एक अजीब कॉर्स मुद्दे में चल रहा हूँ।

यहाँ त्रुटि संदेश है:

XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...] 
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin

दो सर्वर:

  • लोकलहोस्ट: 8666 / रूटरेस्ट /: यह एक साधारण पायथन बॉटल सर्वर है।
  • लोकलहोस्ट: 8080 /: पायथन सिंपलएचटीपीसर्वर जहां मैं y जावास्क्रिप्ट स्क्रिप्ट एप्लीकेशन चलाता हूं। यह ऐप ऊपर सर्वर पर अजाक्स अनुरोधों को निष्पादित कर रहा है।

किसी ने सोचा कि समस्या क्या हो सकती है?

संपादित करें:

और ... बंदरगाह समस्या थी। आपके उत्तर के लिए धन्यवाद :)

यदि कोई भी पायथन बोतल के सर्वर का उपयोग कर रहा है, तो आप इस पोस्ट पर दिए गए उत्तर का पालन कर सकते हैं कि कोर मुद्दा हल करने के लिए: बोतल पाय: jQuery AJAX अनुरोधों के लिए कोर को सक्षम करना


10
चूंकि वे अलग-अलग बंदरगाहों पर हैं, इसलिए समान नहीं हैं!
कुछ

पोर्ट नंबर अलग हैं। इससे क्रॉस ओरिजिन नियमों का उल्लंघन हो सकता है।

4
ध्यान दें कि IE पोर्ट नंबर को ध्यान में नहीं रखता है।
15:14 पर रे निकोलस

@some अधिकांश ब्राउज़र यह भी निष्कर्ष निकालते हैं कि यदि एक 'www' के समान नहीं है और दूसरा नहीं है। विवरण में शैतान।
सेलडोम 'व्हेनस मोनिका' नीडी

@SeldomNeedy example.com, www.example.com, www1.example.com, और mirror.www.example.com सभी विभिन्न डोमेन हैं। example.com , example.com , example.com , example.com:80443 सभी विभिन्न मूल से हैं।
कुछ

जवाबों:


122

इसे केवल तभी माना जाता है जब प्रोटोकॉल , होस्ट और पोर्ट समान हों: समान उत्पत्ति नीति

यदि आप इसे सक्षम करना चाहते हैं तो आपको हेडर जोड़कर क्रॉस-ऑरिजिनल रिसोर्स शेयरिंग (cors) का पालन करना होगा । मोज़िला के उदाहरण हैं

आपको अपनी प्रतिक्रिया में हेडर के रूप में एक्सेस-कंट्रोल-अनुमति-उत्पत्ति को जोड़ने की आवश्यकता है। सभी को अनुमति देने के लिए (आपको शायद ऐसा नहीं करना चाहिए ):

Access-Control-Allow-Origin: *

आप एक से अधिक मूल (उदाहरण के दोनों के लिए समर्थन करने के लिए की जरूरत है example.comऔर www.example.com), सेट Access-Control-Allow-Originके मूल्य के अपने उत्तर में Originअनुरोध से -header (के बाद आप सत्यापित है कि उत्पत्ति सफेद सूचीबद्ध है।)

यह भी ध्यान दें कि कुछ अनुरोध एक विकल्प-विधि के साथ एक प्रीफ़्लाइट-अनुरोध भेजते हैं, इसलिए यदि आप अपना कोड लिखते हैं तो आपको अपने अनुरोधों को भी संभालना होगा। उदाहरण के लिए मोज़िला देखें ।


8
यह हर जगह लाल रंग, राजधानियों और बोल्ड के साथ हाइलाइट किया जाना चाहिए जहां AJAX शामिल होता है।
ज़ोल्टन श्मिट

5
इस उत्तर के परिशिष्ट के रूप में, ध्यान दें कि 'Access-Control-Allow-Origin: https://example.com'इसके बराबर नहीं है 'Access-Control-Allow-Origin: https://www.example.com'। यदि आपकी साइट उन दोनों के माध्यम से सुलभ है, तो आपको अपने प्रतिक्रिया-शीर्षकों में दोनों होना चाहिए।
सेलडोम 'व्हेनस मोनिका' नीडी

1
ध्यान दें कि कोई भी प्रीफ़लाइट अनुरोध साधारण अनुरोधों के लिए डिफ़ॉल्ट रूप से नहीं भेजे जाते हैं GET, POSTऔर HEAD। देखें MDN लेख जवाब में जुड़े हुए अतिरिक्त जानकारी के लिए।
एमिल बर्जरॉन

@ शायद ही कभी आप डुप्लिकेट हेडर नहीं कर सकते हैं
माइक फ्लिन

@ माइकफिल्नन मेरा शब्दांकन एक स्पर्श ढीला था, लेकिन मैं यह सुझाव देने की कोशिश नहीं कर रहा था; सर्वर को अनुरोध के अनुसार, उचित हेडर भेजने के लिए बस कॉन्फ़िगर करने की आवश्यकता है।
सेलडोम 'व्हेनस मोनिका' नीडी

31

पोर्ट नंबर अलग हैं।

यदि किसी भी योजना, होस्टनाम या पोर्ट से मेल नहीं खाता है, तो एक अनुरोध को क्रॉस-डोमेन माना जाता है।


1
४४३ और .० को छोड़कर
जोसेफ

15
443 और 80 सहित
code_monk

4
समस्या की पुष्टि समस्या का समाधान कैसे हो सकती है? जवाब पोस्ट करें यार।
रितेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.