Если вы получите это сообщение об ошибке из браузера:
Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе. Поэтому Origin '...' не разрешает доступ
blockquote>, когда вы пытаетесь выполнить запрос AJAX POST / GET удаленному серверу, который вышел из-под контроля, пожалуйста, забудьте об этом простом исправлении :
<?php header('Access-Control-Allow-Origin: *'); ?>
Что вам действительно нужно делать, особенно если вы используете JavaScript для выполнения запроса Ajax, является внутренним прокси-сервером, который берет ваш запрос и отправляет его на удаленный сервер.
Сначала в вашем JavaScript, сделайте вызов Ajax на свой собственный сервер, например:
$.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); } });
Затем создайте простой PHP-файл с именем proxy.php, чтобы обернуть ваши данные POST и добавить их на удаленный URL-сервер в качестве параметров. Я приведу пример того, как я обойду эту проблему с API-интерфейсом API 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)); }
Выполняя:
echo json_encode(file_get_contents($url));
Вы делаете один и тот же запрос, но на на стороне сервера и после этого, он должен работать нормально.