Wenn Sie diese Fehlermeldung vom Browser erhalten:
In der angeforderten Ressource ist kein Header 'Access-Control-Allow-Origin' vorhanden. Origin '…' ist daher kein Zugriff gestattet
Wenn Sie versuchen, eine Ajax POST / GET-Anforderung an einen Remote-Server zu senden, auf den Sie keinen Einfluss haben, vergessen Sie bitte diese einfache Lösung:
<?php header('Access-Control-Allow-Origin: *'); ?>
Was Sie wirklich tun müssen, insbesondere wenn Sie nur JavaScript verwenden, um die Ajax-Anforderung auszuführen, ist ein interner Proxy, der Ihre Anfrage entgegennimmt und an den Remote-Server weiterleitet.
Führen Sie zunächst in Ihrem JavaScript einen Ajax-Aufruf an Ihren eigenen Server durch.
$.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);
}
});
Erstellen Sie dann eine einfache PHP-Datei mit dem Namen proxy.php, um Ihre POST-Daten zu verpacken und als Parameter an den Remote-URL-Server anzuhängen. Ich gebe Ihnen ein Beispiel, wie ich dieses Problem mit der Expedia Hotel-Such-API umgehen kann:
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));
}
Indem Sie Folgendes tun:
echo json_encode(file_get_contents($url));
Sie führen nur die gleiche Abfrage durch, aber auf der Serverseite, und danach sollte es gut funktionieren.