Политика CORS в AJAX запросах на PHP
Через AJAX нельзя просто так делать запросы к другим сайтам. Такие запросы регулируются политикой CORS. Вкратце, по этой политике сайт, на который вы направляете запрос, должен согласиться на него ответить. Для этого он должен отдать соответствующие HTTP заголовки.
Давайте попробуем на практике.
Пусть у нас будет два локальных домена:
test.loc и targ.loc.
Давайте попробуем отправить AJAX запрос
со первого сайта на второй.
Пусть на сайте targ.loc
есть страница ajax.php,
отдающая какой-то текст:
<?php
echo 'text';
?>
Отправим AJAX запрос с сайта
test.loc на сайт targ.loc:
let response = await fetch('http://targ.loc/ajax.php');
let text = await response.text();
console.log(text);
В результате запрос не выполнится, а в консоли браузера мы увидим ошибку, связанную с политикой CORS.
Чтобы запрос выполнился, сайт targ.loc
должен отдать специальные HTTP заголовки.
Давайте их укажем - и запрос
начнет проходить:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
echo 'text';
?>
Отправьте в AJAX запросе куки
с одного сайта на другой.
Для этого укажите соответствующее
значение настройки credentials.