यदि आपको यह त्रुटि संदेश ब्राउज़र से मिलता है:
अनुरोधित संसाधन पर कोई 'एक्सेस-कंट्रोल-अनुमति-उत्पत्ति' हेडर मौजूद नहीं है। उत्पत्ति '...' इसलिए पहुँच की अनुमति नहीं है
जब आप किसी दूरस्थ सर्वर से Ajax POST / GET अनुरोध करने की कोशिश कर रहे हैं, जो आपके नियंत्रण से बाहर है, तो कृपया इस सरल लिंक के बारे में भूल जाएं:
<?php header('Access-Control-Allow-Origin: *'); ?>
आपको वास्तव में क्या करने की आवश्यकता है, खासकर यदि आप केवल अजाक्स अनुरोध करने के लिए जावास्क्रिप्ट का उपयोग करते हैं, एक आंतरिक प्रॉक्सी है जो आपकी क्वेरी लेता है और इसे दूरस्थ सर्वर के माध्यम से भेजता है।
पहले अपने जावास्क्रिप्ट में, अपने स्वयं के सर्वर पर एक अजाक्स कॉल करें, जैसे कुछ:
$.ajax({
url: yourserver.com/controller/proxy.php,
async:false,
type: "POST",
dataType: "json",
data: data,
success: function (result) {
JSON.parse(result);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
}
});
फिर, अपने POST डेटा को लपेटने के लिए प्रॉक्सी.php नामक एक सरल PHP फ़ाइल बनाएं और उन्हें एक पैरामीटर के रूप में दूरस्थ URL सर्वर पर जोड़ें। मैं आपको एक्सपीडिया होटल खोज एपीआई के साथ इस समस्या को कैसे दरकिनार करता हूं, इसका एक उदाहरण देता हूं:
if (isset($_POST)) {
$apiKey = $_POST['apiKey'];
$cid = $_POST['cid'];
$minorRev = 99;
$url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?' . 'cid='. $cid . '&' . 'minorRev=' . $minorRev . '&' . 'apiKey=' . $apiKey;
echo json_encode(file_get_contents($url));
}
ऐसा करके:
echo json_encode(file_get_contents($url));
आप बस एक ही क्वेरी कर रहे हैं, लेकिन सर्वर की तरफ और उसके बाद, यह ठीक काम करना चाहिए।