Google Chrome को स्थानीय फ़ाइल से URL लोड करने के लिए XMLHttpRequest का उपयोग करने की अनुमति दें


125

स्थानीय फ़ाइल से XMLHttpRequest का उपयोग करके HTTP अनुरोध करने का प्रयास करते समय, यह मूल रूप से Access-Control-Allow-Originउल्लंघन के कारण विफल हो जाता है ।

हालाँकि, मैं स्वयं स्थानीय वेब पेज का उपयोग कर रहा हूं, इसलिए मैं सोच रहा था कि क्या Google Chrome को इन अनुरोधों को अनुमति देने का कोई तरीका है, जो स्थानीय फ़ाइल से इंटरनेट पर URL तक हैं।

उदाहरण के लिए, $.get('http://www.google.com/')स्थानीय फ़ाइल में निष्पादित करने में विफल रहता है, लेकिन मैंने पृष्ठ को स्वयं स्क्रिप्ट किया है और मैं इसे स्वयं उपयोग कर रहा हूं, इसलिए यदि मैं इसे दबा सकता हूं और URL लोड कर सकता हूं तो यह बहुत उपयोगी होगा।

तो, मैं स्थानीय फ़ाइलों से XMLHttpRequest का उपयोग करके Google Chrome को URL लोड करने की अनुमति कैसे दे सकता हूं?


1
Access-Control-Allow-Origin: nullवेबसाइट के द्वारा काम करता है। (
inc। google

3
@ जैस्समिनस्मिथ: उत्तरों का क्रम बदल जाता है, और स्वीकृत उत्तर भी बदल सकता है, इसलिए किसी उत्तर को 'स्वीकृत उत्तर के नीचे का उत्तर' की तरह कहने से बेहतर है कि किसी उत्तर से जोड़ना। उस URL का उपयोग करें जिसका उत्तर 'शेयर' लिंक देता है।
माइकल स्काइपर

2
@MichaelScheper आपकी टिप्पणी कुछ हद तक अप्रासंगिक है जिसे मैंने वास्तविक कमांड में काम किया है। हालाँकि, यदि लिंक को शामिल करने के लिए मूल्य है, तो मैंने हटा दिया और सम्मान किया। आधुनिक क्रोम में, त्रुटियां ऐसी दिखती हैं: XMLHttpRequest फ़ाइल लोड नहीं कर सकती: ///path/to/file/css/base.css। क्रॉस मूल अनुरोध केवल प्रोटोकॉल योजनाओं के लिए समर्थित हैं: http, डेटा, क्रोम, क्रोम-एक्सटेंशन, https, क्रोम-एक्सटेंशन-संसाधन। इस जवाब में stackoverflow.com/a/4819114/1649165 ने मेरे लिए काम किया, यानी कमांड लाइन से क्रोम चलाया: chrome --allow-file-access-from-files
Jessamyn Smith

@ जैस्मिनस्मिथ: क्षमा करें, आपको लगा कि मेरी सलाह अप्रासंगिक थी। चूँकि आपने सोचा था कि एक विशेष उत्तर प्रासंगिक था, इसलिए मुझे लगा कि आप अपनी टिप्पणी को भविष्य में प्रमाणित कर सकते हैं। मेरी गलती।
माइकल शेपर

जवाबों:


49

स्टार्टअप क्रोम के साथ --disable-web-security

विंडोज पर:

chrome.exe --disable-web-security

मैक पर:

open /Applications/Google\ Chrome.app/ --args --disable-web-security

यह क्रॉस-डोमेन अनुरोधों के लिए अनुमति देगा।
मुझे पता नहीं है कि क्या यह स्थानीय फ़ाइलों के लिए भी काम करता है, लेकिन हमें बताएं!

और उल्लेख करें, यह वही करता है जो आप उम्मीद करते हैं, यह वेब सुरक्षा को अक्षम करता है, इसलिए इसके साथ सावधान रहें।


आप सफारी का उपयोग मैक पर भी कर सकते हैं। यह स्थानीय फ़ाइल से अनुरोध करने पर AJAX को स्थानीय फ़ाइलों के लिए अनुमति देता है। साथ ही, '.exe' के बारे में, विंडोज के बारे में Q में कुछ भी नहीं कहा गया है। पिम एक विंडोज देव है, लेकिन फिर भी, विंडोज के बारे में कुछ भी नहीं कहा गया है।

1
हाँ मैं विंडोज पर हूँ, इस बारे में खेद है। अब यह कोशिश करेंगे, धन्यवाद। वैसे, जब मेरा कंप्यूटर चालू होता है, तो मैं हमेशा Chrome चला रहा होता हूं, तो क्या केवल स्थानीय फ़ाइलों के साथ या किसी विशिष्ट टैब में केवल डोमेन अनुरोध करने की अनुमति है? इस तरह से, मैं वास्तव में एक ही समय में इंटरनेट को सुरक्षित रूप से ब्राउज़ नहीं कर सकता ...
pimvdb

1
मैंने अभी हाल ही में नवीनतम क्रोमियम बिल्ड डाउनलोड किया, ताकि स्टैंडअलोन, परीक्षण के लिए असुरक्षित संस्करण और 'असली', सुरक्षित इंटरनेट ब्राउज़िंग के लिए क्रोम स्थापित हो। और यह काम करता है, धन्यवाद!
pimvdb

@ टोम - आपको मैक पर सफारी के साथ ऐसा करने में सक्षम होना चाहिए, बिना किसी सेटिंग परिवर्तन के, जब तक आप "फाइल: ///" प्रोटोकॉल का उपयोग करते हैं और " लोकलहोस्ट " नहीं
15

2
मैंने इसे सफारी 10.1 पर आज़माया और इसने मुझे दिया: XMLHttpRequest cannot load file:///<my_local_file>. Cross origin requests are only supported for HTTP.इसलिए इस धागे से सफारी ब्राउज़र के बारे में बयान अब मान्य नहीं है।
मिशाल किचन

233

--disable-web-securityस्विच का उपयोग करना काफी खतरनाक है ! जब आप XMLHttpRequest को --allow-file-access-from-filesस्विच का उपयोग करके अन्य फ़ाइलों से फ़ाइलों तक पहुँचने की अनुमति दे सकते हैं, तो सुरक्षा को अक्षम क्यों करें?

इन आदेशों का उपयोग करने से पहले क्रोम के सभी चल रहे उदाहरणों को समाप्त करना सुनिश्चित करें।

विंडोज पर:

chrome.exe --allow-file-access-from-files

मैक पर:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

Chrome की इस "विशेषता" की चर्चा :


5
क्या हर बार टर्मिनल / कमांड लाइन या कस्टम शॉर्टकट खोलने के बिना इसे डिफ़ॉल्ट व्यवहार करना संभव है?
कोकोडोको

1
@ कोकोदोको मुझे नहीं लगता।
कोन्सटेंटिन स्मोलैनिन

2
@ जोश मैं पूरी तरह से सहमत हूं कि वेब साइट के विकास के लिए स्थानीय वेब सर्वर का उपयोग करना बेहतर है फिर ब्राउज़र द्वारा सीधे स्थानीय फ़ाइलों तक पहुंचना। हालाँकि सटीक प्रश्न पूछा गया था और मैंने अभी इसका उत्तर दिया है।
कोन्स्टेंटिन स्मोलैनिन

13
यदि कोई अन्य व्यक्ति यह कोशिश करने जा रहा है: यह ध्वज उपलब्ध नहीं है / संशोधित करने योग्य हैchrome://flags
Blaise

5
@pimvdb मुझे लगता है कि आपको इसे स्वीकृत उत्तर के रूप में चिह्नित करना चाहिए।
क्रिस-एल

21

मैक संस्करण। टर्मिनल रन से:

open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files

मुझे यहां कई डाउन वोट मिले हैं। क्या आप विस्तृत कर सकते हैं कि मेरे उत्तर में क्या गलत है?
नेक

जैसा कि अन्य उत्तर बताते हैं, विशिष्ट स्विच होने पर सभी वेब सुरक्षा को अक्षम करने का सुझाव देना नासमझी है जो इस एक एकल चीज को बदल देता है।
जिज्ञासु ३

अधिक स्थायी समाधान करना अच्छा होगा। यह मानता है कि उपयोगकर्ता अग्रिम में जानता है और क्रोम के एक रिले की भी आवश्यकता है।
माइकल डन

3

उबंटू पर:

chromium-browser --disable-web-security

अधिक जानकारी के लिए / स्विच:

http://peter.sh/experiments/chromium-command-line-switches/

से संदर्भित है


मुझे लगता है कि निर्दिष्ट फाइलें सुरक्षित हो जाएंगी 'google-chrome --allow-file-access-from-files ~ / foo `
मुहम्मद मौसा

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