2012-07-26 18 views
5

आज $.get के साथ मेरे सर्वर पर एक PHP फ़ाइल की सामग्री प्राप्त करने का प्रयास करते समय मुझे एक बहुत ही अजीब त्रुटि आई है।

यह केवल सफारी और मैक ओएस एक्स (हिम तेंदुए) पर क्रोम होता है, विंडोज़ पर यह सभी ब्राउज़रों में ठीक से काम करता है।

function _fc() { 
    $.get("_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) { 

     if (data=='0') { letItGo=true; $('#loginform').submit(); } 
     else ...//Do some other checks 
    }); 
} 
  • यह एक स्थानीय सर्वर नहीं है, यह एक मौजूदा डोमेन
  • मैं नहीं किसी भी क्रॉस-डोमेन ajax प्रदर्शन करने के लिए कोशिश कर रहा हूँ के साथ एक वेब सर्वर है:

    समारोह की तरह है। दोनों फाइलें एक ही निर्देशिका में हैं।

मुझे इसके लिए कोई समाधान नहीं मिल रहा है।

सटीक त्रुटि:

XMLHttpRequest cannot load 
http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something. 
Origin http://asking1.com is not allowed by Access-Control-Allow-Origin. 
+0

जब आप कहते हैं कि यह केवल मैक ओएस एक्स पर होता है, तो आप क्लाइंट ओएस का जिक्र कर रहे हैं, है ना? यह आपके मैक ओएस एक्स परीक्षणों और आपके विंडोज परीक्षणों में एक ही सर्वर है? –

+0

मुझे पता है कि ये अलग-अलग ब्राउज़र हैं, लेकिन उनमें से दोनों में मेरा कोड काम नहीं करता है। मेरा सर्वर यूनिक्स-आधारित है, मैं बस विंडोज और मैक ओएस एक्स पर परीक्षण करता हूं। पूर्ण त्रुटि - संपादित प्रश्न –

उत्तर

0

मैं इस इस तरह से किया है:

$.get("http://<?php echo $_SERVER['HTTP_HOST']; ?>/_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) { (...) 

तुम लोग सबसे अच्छा कर रहे हैं। धन्यवाद।

2

आपका जवाब त्रुटि संदेश में है:

XMLHttpRequest cannot load 
http://www.asking1.com/_x_fc.php?xaction=login&xv1=something&xv2=something. 
Origin http://asking1.com is not allowed by Access-Control-Allow-Origin.

http://www.asking1.com और http://asking1.comअलग मूल हैं, और इसलिए यह एक ही मूल नीति के afoul गिर जाता है। छठे उदाहरण here देखें।

यदि आपका कोड वास्तव में उद्धृत किया गया है, सापेक्ष यूआरएल के साथ, ऐसा नहीं होना चाहिए, क्योंकि त्रुटि संदेश से दस्तावेज़ http://asking1.com पर है, इसलिए सापेक्ष पथ http://askign1.com/_x_fc.php पर हल होगा, जो ठीक होगा।

यदि आपके कोड में इसका पूर्ण पथ है, तो यह आपकी समस्या है। बस अपने उद्धृत कोड की तरह दिखने के लिए इसे हटा दें।

यदि आपके कोड में वास्तव में सापेक्ष पथ है, तो आपको चीजों को थोड़ा सा खोदने की आवश्यकता होगी। कुछ, कहीं, ब्राउज़र को लगता है कि www.asking1.com सामग्री के लिए अनुरोध asking1.com से आ रहा है।

+0

देखें लेकिन यह केवल एक मुद्दा होगा, यदि ओपी '$ .get' कॉल के लिए एक पूर्ण पथ स्थापित कर रहा था, जहां चूंकि, वे एक सापेक्ष पथ स्थापित कर रहे हैं, इस मामले में, वास्तविक डोमेन तब तक अलग नहीं होगा जब तक कि कोई .htaccess फ़ाइल अनुरोध को पुनर्निर्देशित न करे। – Gavin

+0

@ गैविन: सच - यह मानते हुए कि उद्धृत कोड सटीक है (दुख की बात है, मैंने अक्सर इसे छोटा करने के लिए कोड संपादित किया है जो त्रुटि को संपादित करता है)। भले ही, त्रुटि संदेश स्पष्ट है कि यह एक एसओपी चीज है। –

2

www तकनीकी रूप से एक उप-डोमेन है। तो आप same-origin policy का उल्लंघन कर रहे हैं। आप या

function _fc() { 
    document.domain = "www.asking1.com"; 
    $.get("_x_fc.php", { xaction: 'login', xv1: $('#login').attr("value"), xv2: $('#pass').attr("value") }, function (data) { 

     if (data=='0') { letItGo=true; $('#loginform').submit(); } 
     else ...//Do some other checks 
    }); 
} 

सेट करके ऐसा हल कर सकता है आप पूरी तरह से अपने यूआरएल है कि आप अपने AJAX अनुरोध का एक भाग के रूप में गुजर रहे हैं सुनिश्चित करने के लिए कि यह वही है काबिल बन सकें।

+0

मैं इसे आज़मा दूंगा। –

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