javascript - घातक कोर जब http:// localhost मूल है




html5 xmlhttprequest (2)

क्रोम CORS अनुरोधों के लिए लोकलहोस्ट का समर्थन नहीं करता है (2010 से एक खुली बग)।

इसके आस-पास पहुंचने के लिए आप lvh.me जैसे डोमेन का उपयोग कर सकते हैं (जो 127.0.0.1 पर lvh.me तरह ही lvh.me करता है) या क्रोम को - --disable-web-security ध्वज के साथ शुरू करें (माना जाता है कि आप केवल परीक्षण कर रहे हैं)।

मैं इस कोरस समस्या से फंस गया हूं, भले ही मैं उचित शीर्षकों के साथ सर्वर (nginx / node.js) सेट करता हूं।

मैं क्रोम नेटवर्क फलक में देख सकता हूं -> प्रतिक्रिया शीर्षलेख:

Access-Control-Allow-Origin:http://localhost

जो चाल करना चाहिए।

यहां कोड है जिसे मैं अब परीक्षण करने के लिए उपयोग करता हूं:

var xhr = new XMLHttpRequest();
xhr.onload = function() {
   console.log('xhr loaded');
};
xhr.open('GET', 'http://stackoverflow.com/');
xhr.send();

मुझे मिला

XMLHttpRequest cannot load http://stackoverflow.com/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.

मुझे संदेह है कि यह क्लाइंट स्क्रिप्ट में एक समस्या है और सर्वर कॉन्फ़िगरेशन नहीं है ...


प्रति @ बीऊ के उत्तर में, क्रोम स्थानीयहोस्ट सीओआरएस अनुरोधों का समर्थन नहीं करता है, और इस दिशा में कोई भी बदलाव नहीं है।

मैं अनुमति-नियंत्रण-अनुमति-उत्पत्ति का उपयोग करता हूं : * क्रोम एक्सटेंशन इस मुद्दे के आसपास जाने के लिए। विस्तार सीओआरएस के लिए आवश्यक HTTP शीर्षलेख जोड़ देगा:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: "GET, PUT, POST, DELETE, HEAD, OPTIONS"
Access-Control-Expose-Headers: <you can add values here>

स्रोत कोड गीथूब पर प्रकाशित है

ध्यान दें कि विस्तार डिफ़ॉल्ट रूप से सभी यूआरएल फ़िल्टर करता है। यह कुछ वेबसाइटों को तोड़ सकता है (उदाहरण के लिए: ड्रॉपबॉक्स)। मैंने इसे निम्नलिखित यूआरएल फ़िल्टर के साथ केवल स्थानीयहोस्ट यूआरएल फ़िल्टर करने के लिए बदल दिया है

*://localhost:*/*




xmlhttprequest-level2