Тестер запросов CORS

Отправьте настоящий кросс-доменный запрос из браузера к любому API, чтобы узнать, разрешает ли его CORS. Объясняет, когда нужен preflight, и показывает заголовки.

Это «простой» запрос: preflight не нужен, но ответ можно прочитать только при наличии заголовка Access-Control-Allow-Origin, совпадающего с этим сайтом.
Запрос отправляется прямо из вашего браузера с источником этой страницы (https://algokit.dev) — точно так же, как это сделал бы скрипт на сайте. Видны только заголовки из безопасного списка CORS и перечисленные в Access-Control-Expose-Headers.

Что такое Тест CORS?

Тестер отправляет настоящий кросс-доменный запрос из вашего браузера (с выбранными вами методом, Content-Type, пользовательским заголовком и режимом передачи учётных данных) и сообщает, позволяет ли браузер JavaScript прочитать ответ. Перед отправкой он объясняет, «простой» ли запрос или ему нужен предварительный запрос OPTIONS, и почему.

Как пользоваться Тест CORS

  1. Введите URL API для проверки.
  2. Выберите метод, при желании Content-Type и пользовательский заголовок, например Authorization: Bearer x.
  3. Отметьте «Отправлять cookie и учётные данные», если ваше приложение использует credentials: include.
  4. Прочитайте объяснение про preflight, затем нажмите «Отправить тестовый запрос».
  5. Если запрос разрешён, изучите статус и заголовки, доступные JavaScript; если заблокирован, посмотрите точную ошибку CORS в консоли браузера.

Когда использовать Тест CORS

Используйте, чтобы проверить, можно ли вызывать публичный API из браузерного приложения, или воспроизвести ошибку CORS с конкретными заголовками. Источник всегда https://algokit.dev, поэтому сервер, разрешающий только ваш собственный домен, корректно покажется заблокированным; для точного совпадения проверяйте со своего сайта. Инструмент не отличает сбои CORS от сетевых и TLS-ошибок: браузер этого не раскрывает.

Как работает Тест CORS

Инструмент вызывает fetch() с mode: "cors" из источника страницы (https://algokit.dev) точно так же, как ваш собственный фронтенд-код. Объяснение про preflight следует стандарту Fetch: методы, кроме GET/HEAD/POST, Content-Type, отличный от form-urlencoded, multipart/form-data или text/plain, или любой пользовательский заголовок вызывают предварительный запрос OPTIONS. Когда браузер блокирует ответ, он выбрасывает общий TypeError и намеренно скрывает причину, поэтому инструмент советует посмотреть консоль.

Распространенные Случаи Использования

  • Проверить, отправляет ли сторонний API Access-Control-Allow-Origin, прежде чем встраивать его в SPA.
  • Выяснить, какой заголовок в запросе вызывает preflight.
  • Проверить, что credentials: include работает (нужен конкретный источник, а не *).
  • Узнать, какие заголовки ответа доступны JavaScript через Access-Control-Expose-Headers.

Примечание по Безопасности

Запрос идёт напрямую из вашего браузера на введённый URL; при включённых учётных данных отправляются и ваши cookie для этого сайта.

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

Почему curl работает, а браузер нет?

CORS применяют только браузеры. curl и серверы его игнорируют, поэтому API может работать из curl и всё же быть нечитаемым со веб-страницы.

Что вызывает preflight?

Метод, отличный от GET, HEAD или POST, непростой Content-Type вроде application/json или любой пользовательский заголовок запроса, например Authorization.

Можно ли использовать Access-Control-Allow-Origin: * с cookie?

Нет. С учётными данными сервер должен вернуть точный источник и отправить Access-Control-Allow-Credentials: true.

Другие категории