Генератор и тестер CORS-заголовков — исправляем «Заблокировано политикой CORS»

Видите «has been blocked by CORS policy»? Опишите, кто может обращаться к вашему API: источники, методы, заголовки, credentials, — и получите нужные Access-Control-* заголовки в виде кода для Express, Nginx, Apache, Netlify, Vercel, Next.js, Cloudflare Workers или PHP. Затем проверьте работающий URL: тестер отправит тот же preflight, что и браузер, и пояснит по каждому заголовку, разрешён ли запрос.

Обновлено
Конфигурация CORS

Этот инструмент загружает публичный URL, который вы вводите, с нашего сервера. Результаты хранятся во временной памяти несколько минут и никогда не сохраняются в базе данных.

Был ли этот инструмент полезен?0.0 Оценок: 0
Онлайн API-тестер: отправляйте GETPOST, PUT, PATCH и DELETE-запросы с заголовками, JSON и авторизацией, смотрите ответ и копируйте как cURL.API-тестер →

Как пользоваться: Генератор CORS-заголовков

  1. В разделе Генерация заголовков укажите источники, которым можно обращаться к вашему API (или разрешите любые), отметьте методы и введите заголовки запроса, которые отправляет ваш фронтенд, — обычно это Content-Type и Authorization.
  2. Отметьте Разрешить credentials, только если браузеру нужно отправлять cookies или заголовок Authorization с credentials: 'include'.
  3. Выберите платформу и скопируйте код — Express, Nginx, Apache, Netlify, Vercel, Next.js, Workers или PHP.
  4. Разверните изменения, затем перейдите в раздел Проверить URL: введите URL API и источник страницы, чтобы увидеть, пройдут ли preflight и основной запрос.

Почему браузеры блокируют запросы

Страница на https://app.example.com может прочитать ответ от https://api.example.com только в том случае, если API разрешает это с помощью CORS-заголовков. Для всего, что выходит за рамки простого GET или отправки формы POST — JSON-тела, заголовки Authorization, PUT или DELETE — браузер сначала отправляет preflight: запрос OPTIONS, который спрашивает: «может ли этот источник использовать такой метод и такие заголовки?». Если ответа нет или он неверный, вы видите «Заблокировано политикой CORS», и ваш код так и не получает ответ.

ЗаголовокЧто он должен содержать
Access-Control-Allow-OriginТочный источник вызывающей страницы или * (не допускается с credentials)
Access-Control-Allow-MethodsМетод основного запроса (только для preflight)
Access-Control-Allow-HeadersВсе нестандартные заголовки запроса, например Authorization или Content-Type: application/json
Access-Control-Allow-Credentialstrue, если отправляются cookies или другие credentials
Access-Control-Max-AgeКак долго браузер может кэшировать ответ на preflight
Vary: OriginНужен, когда разрешённый источник меняется от запроса к запросу, чтобы кэши не отдавали ответ одного источника другому

Как работает проверка

Наш сервер отправляет запрос с заголовком Origin и, если браузеру нужен preflight, запрос OPTIONS с Access-Control-Request-Method и -Headers — так же, как Chrome или Firefox. Затем он сверяет ответ с правилами CORS, которые применяют браузеры. Серверы, которые разрешают доступ только с определённых IP-адресов или требуют cookies, могут отвечать реальным пользователям иначе. Также см.: HTTP Header Checker, API Tester, Security Headers Checker.

Также ищут как: access-control-allow-origin, cors preflight тест, express cors, nginx cors настройка.

Инструменты, которые хорошо сочетаются с Генератор CORS-заголовков

  • Генератор CSP — Выберите, что загружает ваш сайт: скрипты, стили, изображения, шрифты, аналитику, встраиваемые элементы.
  • cURL в код — Вставьте команду curl из документации к API или пункт «Copy as cURL» из DevTools браузера, и вы получите готовый код для шести языков с сохранёнными заголовками, телом запроса и авторизацией.
  • Генератор конфига Nginx — Выберите, что должен делать Nginx: отдавать статический сайт или SPA, проксировать запросы к приложению на Node/Python или обрабатывать PHP.
  • Анализатор заголовков письма — Вставьте исходные заголовки письма, чтобы увидеть весь его путь: каждый почтовый сервер и время, которое он потратил, результаты SPF, DKIM и DMARC, IP-адрес отправителя и тревожные признаки, например несовпадающие Reply-To или Return-Path.

Часто задаваемые вопросы

Как исправить ошибку «No Access-Control-Allow-Origin header is present»?
API должен отправлять Access-Control-Allow-Origin с источником вашей страницы (или *). Сгенерируйте конфигурацию для своего сервера здесь, разверните её и запустите проверку, чтобы убедиться в результате. Исправление всегда делается на сервере API, а не в коде фронтенда.
Почему нельзя использовать * вместе с credentials?
Браузеры отклоняют Access-Control-Allow-Origin: *, если запрос содержит cookies или credentials. Вместо этого перечислите точные источники (или возвращайте Origin из запроса после проверки) и отправляйте Access-Control-Allow-Credentials: true.
Почему API возвращает 404 или 405 для OPTIONS?
Preflight — это запрос OPTIONS, который ваши маршруты могут не обрабатывать. Он должен возвращать 2xx с CORS-заголовками. Сгенерированный код отвечает на OPTIONS кодом 204.
Безопасно ли разрешать любой источник?
Для публичных API только для чтения без cookies использование * допустимо. Если же используются логины или cookies, разрешайте только доверенные источники: возврат любого источника с credentials позволит любому сайту действовать от имени ваших авторизованных пользователей.

Похожие инструменты

apiAPI-тестерЛёгкая альтернатива Postman прямо в браузере: составьте HTTP-запрос, отправьте его и изучите статус,…apiПроверка HTTP-заголовковВведите любой URL и увидите, что именно отправляет сервер: код статуса, цепочку редиректов и все заголовки…apiПроверка заголовков безопасностиОцените HTTP-заголовки безопасности сайта от A+ до F, узнайте, каких не хватает и почему они важны, и…localГенератор CSPВыберите, что загружает ваш сайт: скрипты, стили, изображения, шрифты, аналитику, встраиваемые элементы.…localcURL в кодВставьте команду curl из документации к API или пункт «Copy as cURL» из DevTools браузера, и вы получите…localГенератор конфига NginxВыберите, что должен делать Nginx: отдавать статический сайт или SPA, проксировать запросы к приложению на…