2012-01-11 22 views
7

मैं http://foo.bar.no/API/map_tools/clean_addresses/check लोड नहीं कर सकता इस JavaScript त्रुटिमेरे अपने सर्वर पर विकास के लिए पिछले एक्सेस-कंट्रोल-अनुमति-उत्पत्ति प्राप्त करने का कोई तरीका?

XMLHttpRequest हो रही है। उत्पत्ति http://foo.bar.no:9294 को एक्सेस-कंट्रोल-अनुमति-उत्पत्ति द्वारा अनुमति नहीं है।

यह एक ही डोमेन और एक ही सर्वर पर सब है, लेकिन मेरे जावास्क्रिप्ट परियोजना एक स्टैंडअलोन सर्वर स्क्रिप्ट कि स्वचालित रूप से जावास्क्रिप्ट बंडल द्वारा की मेजबानी की जा रही है और यह एक फ़ाइल में निर्भरता है।

मैं विकास के दौरान इस प्रतिबंध को कैसे प्राप्त करूं?


मैंने अपनी जावास्क्रिप्ट सर्वर स्क्रिप्ट को कनेक्ट करने की अनुमति देने का प्रयास किया है। इस यूआरएल के लिए एक कर्ल का परिणाम है:

 
HTTP/1.1 200 OK 
Date: Wed, 11 Jan 2012 09:05:14 GMT 
Server: Apache/2.2.16 (Debian) 
Access-Control-Allow-Origin: http://foo.bar.no:9294 
Vary: Accept-Encoding 
Content-Length: 70 
Content-Type: text/plain 

array(1) { 
    ["q"]=> 
    string(31) "map_tools/clean_addresses/check" 
} 

और जैसा कि मैं ऊपर पेस्ट फिर भी मैं ठीक उसी त्रुटि मिलती है। जब क्रोम को स्पष्ट रूप से अनुमति दी जाती है तो क्रोम अभी भी खराब यूआरएल से जुड़ने से इंकार क्यों करता है !?

+0

एक 'पहुंच-नियंत्रण-अनुमति दें-Origin' उल्लंघन का निर्धारण करने के लिए नियम बहुत सख्त हैं: पहली फ़ॉरवर्ड स्लैश से पहले कोई फर्क, बंदरगाह सहित प्रोटोकॉल (http बनाम https) , और उप-डोमेन, एक पारंपरिक एक्सएचआर-आधारित AJAX अनुरोध ([अच्छा लेख] (http://encosia.com/using-cors-to-access-asp-net-services-across-domains/) एन एनकोशिया) –

+0

हाँ मुझे लगा कि। क्या कोई तरीका है कि मैं अपने ब्राउज़र को "विकास मोड" या कुछ ऐसा कहां रख सकता हूं जहां मैं विकास कर रहा हूं, जबकि यह% ¤ # @ बंद हो जाएगा? कोई भी विंडोज ब्राउज़र – Hubro

+0

करेगा आप अन्य डोमेन यूआरएल का अनुरोध करने के लिए JSONP या प्रॉक्सी का उपयोग करेंगे। लेख इसे छोड़ने के लिए सीओआरएस मानक का उपयोग कर एक विकल्प का प्रस्ताव करता है। –

उत्तर

2

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

header("Access-Control-Allow-Origin: http://foo.bar.no:9294"); 
header("Access-Control-Allow-Credentials: true"); 

अपाचे पर मेरी PHP स्क्रिप्ट में सेट करना पड़ा। मेरी जावा स्क्रिप्ट कोड में तब:

# Set jQuery ajax to use 'withCredentials' globally 
$.ajaxSetup({ 
    xhrFields: { 
     withCredentials: true 
    } 
}); 

और वह आप --disable-वेब-सुरक्षा फ्लैग के साथ शुरू करने से चारों ओर क्रोम में क्रॉस-डोमेन सुरक्षा सुरक्षा प्रतिबंधों प्राप्त कर सकते हैं चाल

1

प्रॉक्सी http://foo.bar.no/API/map_tools/clean_addresses/check से http://foo.bar.no:9294/API/map_tools/clean_addresses/check पर अपनी वेबसर्वर की रिवर्स प्रॉक्सी क्षमताओं का उपयोग करें।

तो, जैसा कि आप अपाचे का उपयोग करें, आप कुछ तरह

<Proxy *> 
      Order allow,deny 
      allow from all 
    </Proxy> 

    ProxyPass /API/map_tools/ http://foo.bar.no:9294/API/map_tools/ 
    ProxyPassReverse /API/map_tools/ http://foo.bar.no:9294/API/map_tools/ 

अपने vhost config

+0

मुझे इसके बारे में कुछ भी नहीं समझा, क्षमा करें – Hubro

+0

विकास के लिए आप किस वेबसर्वर का उपयोग करते हैं? –

+0

: 80 सर्वर अपाचे है, लेकिन: 9 2 9 4 एक नोड स्क्रिप्ट है – Hubro

1

किया था।

उदा। (OS X पर):

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

इसे काम करने के लिए मुझे कुछ समय लगा। विंडोज़ पर क्रोम प्रक्रियाएं मरना नहीं चाहती हैं, भले ही मैं पृष्ठभूमि में चलाने के लिए क्रोम को विशेष रूप से मना कर दूं। जब तक प्रक्रियाएं चल रही हैं, क्रोम निष्पादन योग्य प्रारंभ करने से मौजूदा प्रक्रियाओं के तहत केवल एक नई विंडो खुलती है, इसलिए यह केवल कार्य प्रबंधक का उपयोग करके क्रोम को बंद करने के बाद ही काम करता है। इसका मतलब यह भी था कि मैंने अपने सभी खुले टैब खो दिए ... "हाल ही में बंद" मेनू भी चला गया है। – Hubro

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

  • कोई संबंधित समस्या नहीं^_^