Jika Anda mendapatkan pesan kesalahan ini dari browser:
Tidak ada header 'Access-Control-Allow-Origin' yang ada di resource yang diminta. Oleh karena itu, asal '…' tidak diizinkan mengakses
ketika Anda mencoba melakukan permintaan Ajax POST / GET ke server jarak jauh yang di luar kendali Anda, lupakan tentang perbaikan sederhana ini:
<?php header('Access-Control-Allow-Origin: *'); ?>
Apa yang benar-benar perlu Anda lakukan, terutama jika Anda hanya menggunakan JavaScript untuk melakukan permintaan Ajax, adalah proxy internal yang mengambil kueri Anda dan mengirimkannya ke server jauh.
Pertama di JavaScript Anda, lakukan panggilan Ajax ke server Anda sendiri, seperti:
$.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);
}
});
Kemudian, buat file PHP sederhana bernama proxy.php untuk membungkus data POST Anda dan menambahkannya ke server URL jarak jauh sebagai parameter. Saya memberi Anda contoh bagaimana saya melewati masalah ini dengan API pencarian Hotel Expedia:
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));
}
Dengan melakukan:
echo json_encode(file_get_contents($url));
Anda hanya melakukan kueri yang sama tetapi di sisi server dan setelah itu, seharusnya berfungsi dengan baik.