Есть ajax-запрос:
$.ajax({
url: 'https://<?php echo getDomain($_SERVER['SERVER_NAME']); ?>/engine/search.php',
headers: {'X-Requested-With': 'XMLHttpRequest'},
xhrFields: { withCredentials: true },
crossDomain: true,
method: 'POST',
dataType: 'json',
data: {
data:data
}
});
А на стороне сервера работает скрипт, проверяющий, был ли отправлен запрос посредством ajax:
<?php
$search_data = session_name("search_data");
session_set_cookie_params(0, '/', '.skytickets.ga');
session_start();
require('functions.php');
header("Access-Control-Allow-Origin: https://search." . $_SERVER['SERVER_NAME']);
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: X-Requested-With, Origin");
header("Content-Type: application/json; charset=utf-8");
if(isAjax()) {
$data = $_POST['data'];
if(isset($data) && !empty($data)) {
if(!preg_match('/[A-Z][A-Z][A-Z]/', $data['from']) && !preg_match('/[A-Z][A-Z][A-Z]/', $data['to'])) {
header('HTTP/1.0 500 Internal Server Error');
die('Bad IATA codes provided');
}
if(!validateDate($data['there']) && !validateDate($data['thence'])) {
header('HTTP/1.0 500 Internal Server Error');
die('Bad date format provided');
}
if(!preg_match('/^[1-9]*$/', $data['adults']) && !preg_match('/^[0-9]*$/', $data['teens']) && !preg_match('/^[0-9]*$/', $data['kids'])) {
header('HTTP/1.0 500 Internal Server Error');
die('Bad passengers data provided');
}
$_SESSION['search_data'] = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $_SESSION['search_data'];
die();
}
} else {
header('HTTP/1.0 403 Forbidden');
die('Access denied');
}
?>
Функция isAjax:
function isAjax() {
return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
Перепроверил код 1000 раз, перечитал политику CORS 1000 раз и всё равно не могу понять, почему это не работает. Получаю ошибки OPTIONS 403 (Forbidden) и XMLHttpRequest cannot load. Response for preflight has invalid HTTP status code 403.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сразу оговорюсь, я джавист, и с php и, тем паче, bitrix практически не знаком, но по обстоятельствам, нужно срочно освоить данные технологии, хотя...
Есть два массива, нужно смешать слова внутри них друг с другом: например Panthera bear, Grey leucocephalus и так далее
По выполнении следующего кода, у нас в консоль выведется дважды true: