Код скрипта:
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE);
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Headers: *");
header("Access-Control-Expose-Headers: *");
header("Content-type: application/json");
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
exit;
}
Запрос:
POST http://127.0.0.1/?/auth/login
{password: "123456", phone: "79999999999"}
Результат:
Access to XMLHttpRequest at 'http://127.0.0.1/?/auth/login' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Если прогнать в API Tester, заголовки приходят:
access-control-allow-headers: *
access-control-allow-methods: *
access-control-allow-origin: *
access-control-expose-headers: *
connection: keep-alive
content-type: application/json
date: Wed, 09 Jun 2021 15:29:11 GMT
server: nginx/1.19.10
transfer-encoding: chunked
Что за чертовщина?
UPD: Обнаружил, что nginx не может обработать запросы OPTIONS (405). Как правильно разрешить их? Пока ни один трюк из тех, что нагуглил, не сработал. Мне необходимо направить такой запрос на тот же путь, который отработал бы для обычного GET или POST.