PHP & CORS (Cross-Origin): как это работает?
Я узнал, что вы можете добавить следующее в сценарий PHP, чтобы разрешить перекрестные запросы:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
Обычно я бы добавил это к моему .htaccess
файл, но вышесказанное удобно, когда я тестирую Ajax без Apache. Это конечно работает при тестировании с php -S
,
Я бы подумал, что выбор времени неправильный. Разве запрос CORS не должен быть принят до запуска скрипта? Если так, как у PHP будет возможность решить, добавлять ли эти заголовки?
1 ответ
Проверка CORS осуществляется клиентом, когда он получает ответ. Если клиент и сервер не находятся в одном домене, клиент проверяет ответ, чтобы увидеть, содержит ли он Access-Control-Allow-XXX
Заголовки соответствуют запросу. Если нет, он игнорирует ответ и сообщает об ошибке.
Так что ничто не мешает запускать скрипт PHP. Он может выполнять свои собственные проверки заголовков запросов и параметров формы и решать, разрешать ли операцию.