Якщо ви отримуєте це повідомлення про помилку від браузера:
На запитуваному ресурсі немає заголовка "Access-Control-Allow-Origin". Таким чином, походження "..." не має права доступу
коли ви намагаєтесь зробити запит 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 пошуку готелю 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));
Ви просто робите той же запит, але на стороні сервера, і після цього він повинен працювати добре.