Se ricevi questo messaggio di errore dal browser:
Nessuna intestazione 'Access-Control-Allow-Origin' è presente sulla risorsa richiesta. L'origine '...' non è quindi consentito l'accesso
quando stai provando a fare una richiesta POST / GET Ajax a un server remoto che è fuori dal tuo controllo, dimentica questa semplice soluzione:
<?php header('Access-Control-Allow-Origin: *'); ?>
Quello che devi veramente fare, specialmente se usi JavaScript solo per fare la richiesta Ajax, è un proxy interno che accetta la tua richiesta e la invia al server remoto.
Prima di tutto nel tuo JavaScript, esegui una chiamata Ajax sul tuo server, qualcosa del tipo:
$.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);
}
});
Quindi, crea un semplice file PHP chiamato proxy.php per racchiudere i tuoi dati POST e aggiungerli al server URL remoto come parametri. Ti faccio un esempio di come aggiro questo problema con l'API di ricerca di hotel di 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));
}
Facendo:
echo json_encode(file_get_contents($url));
Stai solo eseguendo la stessa query ma sul lato server e, successivamente, dovrebbe funzionare correttamente.