Для «непростих» запитів (POST з JSON, кастомні заголовки) браузер спочатку надсилає preflight-запит методом OPTIONS. Сервер повертає заголовки, що дозволяють або забороняють запит. Якщо дозволено — браузер надсилає основний запит.
Access-Control-Allow-Origin — домен(и), яким дозволено доступ (* або конкретний домен)Access-Control-Allow-Methods — дозволені HTTP-методиAccess-Control-Allow-Headers — дозволені заголовки запитуAccess-Control-Allow-Credentials — чи можна надсилати cookie з запитомCORS-заголовки встановлює сервер — через middleware, конфігурацію Nginx/Apache або безпосередньо в коді. Помилка «blocked by CORS policy» завжди вирішується на стороні сервера, а не клієнта.