2016-02-02 8 views
14

मैं अक्षरों का उपयोग कर रहा हूं ताकि मेरी redux action.js फ़ाइल में axios.get कॉल कर सकें। मेरे घटक में यह क्रिया फॉर्म सबमिशन पर की जाती है।axios.get कॉल करते समय CORS त्रुटि

मुझे अपने कंसोल में स्थिति 200 मिल रही है लेकिन कोई प्रतिक्रिया वापस नहीं मिल रही है।

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http:\\\\localhost:3000' is therefore not allowed access.

किसी को भी इस तरह के त्रुटि के पार आया है: मैं निम्न त्रुटि हो रही है? क्या आप इसे हल करने के तरीके पर साझा करेंगे।

+0

[मोज़िला इस मुद्दे को बहुत अच्छी तरह से बताता है, एक नज़र डालें।] (Https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) – Timo

+0

@TimoSta - मैं कैसे हल करूं तब यह? मैंने अपने कोड में निम्नलिखित जोड़ दिया है लेकिन फिर भी वही त्रुटि प्राप्त हो रही है --- var config = { \t \t शीर्षलेख: { \t \t 'एक्सेस-कंट्रोल-स्वीट-मेथड': 'प्राप्त करें, पुट, पैच, पोस्ट, डिलीट करें ', \t \t' पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति ':' * ', \t \t' सामग्री-प्रकार ':' आवेदन/json ' \t \t} \t}; \t कॉन्स्ट अनुरोध = axios.get (url, config); – user4076248

+1

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

उत्तर

14

समस्या धुरी के साथ नहीं है। मुद्दा सर्वर के साथ है। जब आप डेटा की सेवा करते हैं तो आपको इसे भेजने से पहले निम्नलिखित शीर्षलेख जोड़ना होगा।

पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति में सेट होना चाहिए *

पहुंच-नियंत्रण-अनुमति दें-हेडर उत्पत्ति, एक्स-अनुरोधित-साथ करने के लिए सेट किया जाना चाहिए, सामग्री-प्रकार, स्वीकार्य

+0

मैं एपीआई कॉल के लिए ऐसा कैसे कर सकता हूं? –

9

पहली समस्या जो मैंने इस समस्या से निपट रही थी वह समझ रहा था कि प्रीफलाइट अनुरोध का क्या अर्थ है। तो मैं वहां से शुरू करूंगा।

ब्राउज़र preflight अनुरोध भेजने के लिए जब भी एक अनुरोध इन मानदंडों को पूरा नहीं करता है:

  • प्राप्त
  • पोस्ट
  • प्रमुख
  • :

    1. HTTP विधियों में से (केस-संवेदी) से मेल खाता है
  • HTTP शीर्षलेख मिलान (केस-असंवेदनशील):
    • स्वीकार
    • स्वीकार करें भाषा
    • सामग्री भाषा
    • अंतिम-घटना-आईडी
    • सामग्री प्रकार, लेकिन केवल तभी मूल्य में से एक है:
      • आवेदन/x-www -फॉर्म-urlencoded
      • मल्टीपार्ट/फॉर्म-डेटा
      • टेक्स्ट/सादा
  • Preflight अनुरोध एक विकल्प विधि है कि तीन अतिरिक्त हेडर कि आपके सर्वर अगर यह CORS लिए कॉन्फ़िगर नहीं है उम्मीद नहीं की जा सकती है शामिल है के साथ बना रहे हैं।वे हैं:

    • पहुंच-नियंत्रण-अनुमति दें-हेडर
    • पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति
    • पहुंच-नियंत्रण-अनुमति दें-तरीके

    सर्वर के लिए कॉन्फ़िगर नहीं है सीओआरएस, यह बस HTTP स्टेटस कोड 200 वाले खाली हेडर के साथ प्रतिक्रिया देता है। एक बार जब आप सीओआरएस के लिए सर्वर कॉन्फ़िगर कर लेते हैं, तो आपको ऊपर सूचीबद्ध शीर्षलेखों को सीओआरएस द्वारा समर्थित हेडर के रूप में शामिल करना चाहिए।

    जो त्रुटि को साफ़ करना चाहिए और आपको सर्वर से संवाद करने की अनुमति देना चाहिए।

    नोट: अपने सर्वर आपके द्वारा बनाए गए कस्टम हेडर संभाल सकते हैं (मेरे मामले, जेडब्ल्यूटी प्रमाणीकरण के लिए Authorization में), यह सबसे अधिक संभावना CORS अनुरोध के लिए कॉन्फ़िगर नहीं किया जाएगा। अगर आपके पास अपने सर्वर तक पहुंच है, तो बस उस सर्वर के लिए CORS को कॉन्फ़िगर करने का तरीका जानें।

    सीओआरएस के बारे में अधिक जानकारी के लिए। देखें https://www.html5rocks.com/en/tutorials/cors/

    +0

    अधूरा उत्तर? –

    +0

    जब भी मैं अभी भी टाइप कर रहा था, मैंने गलती से इसे सबमिट किया। धन्यवाद। –

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