Bu hata mesajını tarayıcıdan alırsanız:
İstenen kaynakta 'Access-Control-Allow-Origin' başlığı yok. '…' Kaynağının bu nedenle erişime izin verilmiyor
kontrolünüz dışındaki bir uzak sunucuya Ajax POST / GET isteği yapmaya çalışırken, lütfen bu basit düzeltmeyi unutun:
<?php header('Access-Control-Allow-Origin: *'); ?>
Özellikle Ajax isteğini yapmak için yalnızca JavaScript kullanıyorsanız, yapmanız gereken şey, sorgunuzu alan ve uzak sunucuya gönderen dahili bir proxy'dir.
İlk önce JavaScript'inizde, kendi sunucunuza bir Ajax çağrısı yapın, şunun gibi:
$.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);
}
});
Ardından, POST verilerinizi sarmak ve bunları uzak URL sunucusuna parametre olarak eklemek için proxy.php adlı basit bir PHP dosyası oluşturun. Size Expedia Hotel arama API'sı ile bu sorunu nasıl atladığımın bir örneğini veriyorum:
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));
}
Yaparak:
echo json_encode(file_get_contents($url));
Sadece aynı sorguyu yapıyorsunuz ama sunucu tarafında ve bundan sonra iyi çalışıyor.