Проверка CORS
Проверьте настройки Cross-Origin Resource Sharing (CORS) для любого URL. Изучите заголовки ответа Access-Control-*, выполните опциональный предварительный запрос (OPTIONS) с пользовательскими Origin/методом/заголовками и выявите типичные ошибки конфигурации, такие как wildcard + credentials, отсутствие Vary: Origin или слишком широкие allow-headers.
Возможности
- Проверка заголовков CORS для любого публичного URL (Access-Control-* и связанные заголовки).
- Опциональная симуляция предварительного запроса (OPTIONS) с пользовательскими Origin, методом запроса и заголовками запроса.
- Следование редиректам (до 10), чтобы проверить конечную точку, которую фактически достигнут браузеры.
- Просмотр исходных заголовков для полной прозрачности и отладки.
- Результаты + оценочная карта с фильтром "только проблемы" для быстрой сортировки.
- Анализ Vary для выявления отсутствия Vary: Origin и других проблем с кешированием в CORS.
- Экспорт результатов в виде JSON и PDF-отчетов для аудитов, тикетов и документации.
- Встроенные рекомендации для типичных проблем: wildcard+credentials, отражение Origin, null Origin, отсутствие allow-methods/allow-headers, отсутствие max-age и слишком широкие allow-headers.
🧭 Как использовать for cors-checker
Введите целевой URL
Вставьте конечную точку, которую хотите протестировать (например, https://api.example.com/resource).
Укажите Origin, с которого тестируете
Введите Origin вашего фронтенд-приложения (схема + хост), например, https://app.example.com. Это значение, которое браузеры отправляют в заголовке Origin.
Выберите режим проверки
Используйте Авто (рекомендуется) для анализа как заголовков ответа, так и поведения предварительного запроса. Используйте Простой запрос, если вам нужен сценарий без предварительного запроса, или Только предварительный запрос для выполнения проверок OPTIONS.
Настройте детали предварительного запроса (если применимо)
Включите "Выполнить предварительный запрос (OPTIONS)" и укажите Метод запроса и Заголовки запроса (через запятую), чтобы симулировать реальное поведение предварительного запроса браузера (например, authorization, content-type). Переключите "Учитывать credentials", если ваш сценарий включает куки или заголовки авторизации.
Просмотрите результаты и экспортируйте
Проверьте результаты/оценочную карту и детали анализа CORS. Включите "Показать исходные заголовки" при отладке. Экспортируйте JSON/PDF для обмена или хранения в аудитах.
Технические характеристики
Модель запроса
Инструмент проверяет заголовки CORS для целевого URL и может опционально выполнить предварительный запрос (OPTIONS), используя предоставленные Origin, метод и запрошенные заголовки. Поддерживается следование редиректам.
| Настройка | Поведение | По умолчанию |
|---|---|---|
| Режим проверки | Авто, Простой запрос или Только предварительный | Авто |
| Выполнить предварительный запрос (OPTIONS) | Если включено, выполняет симуляцию предварительного запроса OPTIONS | Включено |
| Источник (Origin) | Значение заголовка Origin, используемое для анализа/предварительного запроса | https://example.com |
| Метод запроса | Значение Access-Control-Request-Method для предварительного запроса | GET |
| Заголовки запроса | Access-Control-Request-Headers (через запятую) для предварительного запроса | Пусто |
| Следовать редиректам | Следует по цепочке редиректов до конечного URL | Включено |
| Макс. редиректов | Ограничение редиректов для предотвращения зацикливания | 10 (диапазон 0–20) |
| Таймаут | Лимит таймаута запроса | 15000 мс |
| User-Agent | Идентифицирует пользовательский агент запроса | Encode64Bot/1.0 (+https://encode64.com) |
| Частные сети | Блокирует доступ к диапазонам частных сетей для безопасности | Отключено (частные сети не разрешены) |
Проанализированные заголовки (основной набор CORS)
Анализатор фокусируется на стандартных заголовках ответа и запроса CORS, используемых браузерами и предварительными проверками.
| Заголовок | Назначение |
|---|---|
| Access-Control-Allow-Origin | Какие источники (Origin) разрешены |
| Access-Control-Allow-Credentials | Разрешены ли куки/учётные данные (требует не шаблонного origin) |
| Access-Control-Allow-Methods | Методы, разрешённые для кросс-доменных запросов (важно для предварительных запросов) |
| Access-Control-Allow-Headers | Разрешённые заголовки (важно для Authorization и пользовательских заголовков) |
| Access-Control-Expose-Headers | Какие заголовки доступны для чтения JS в браузере |
| Access-Control-Max-Age | Как долго браузер может кэшировать предварительный запрос |
| Vary | Вариация ключа кэша (например, Vary: Origin) для предотвращения отравления/смешивания кэша |
| Origin / Access-Control-Request-* | Используется для имитации поведения предварительного запроса |
Эвристики (распространённые проблемы CORS)
Результаты основаны на практических и ориентированных на безопасность проверках для обнаружения сломанных или рискованных конфигураций CORS.
| Проверка | Почему это важно |
|---|---|
| Подстановка + учётные данные | Access-Control-Allow-Origin: * нельзя использовать с учётными данными; браузеры заблокируют или поведение будет небезопасным |
| Отсутствует Vary: Origin | Если ответы различаются в зависимости от Origin, но не кэшируются правильно, общие кэши могут смешивать ответы между сайтами |
| Отражение Origin | Слепое эхо Origin может непреднамеренно разрешить ненадёжные источники |
| Предупреждения о Null Origin | Origin: null может появляться в изолированных iframe или файловых контекстах; разрешение этого часто рискованно |
| Отсутствуют Allow-Methods / Allow-Headers | Предварительный запрос может завершиться неудачей, если сервер явно не разрешает метод/заголовки |
| Слишком широкие Allow-Headers | Разрешение слишком большого количества заголовков может расширить поверхность атаки |
| Отсутствует Max-Age | Предварительные запросы могут выполняться слишком часто, увеличивая задержку |
Командная строка
Используйте эти команды для воспроизведения поведения CORS и предварительных запросов из вашего терминала. Они полезны для отладки и проверки того, что сообщает инструмент.
macOS / Linux
Проверить заголовки CORS для обычного запроса (симулировать Origin браузера)
curl -i -H "Origin: https://example.com" https://api.example.com/resourceИщите Access-Control-Allow-Origin, Access-Control-Allow-Credentials и Vary.
Выполнить предварительный запрос OPTIONS (метод + заголовки)
curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/privateПредварительный запрос должен вернуть правильные Access-Control-Allow-Methods и Access-Control-Allow-Headers, чтобы браузер мог продолжить.
Следовать редиректам при проверке заголовков
curl -iL -H "Origin: https://example.com" https://api.example.comПолезно, когда конечные точки перенаправляют на другой хост с другими правилами CORS.
Windows (PowerShell)
Проверить заголовки ответа с заголовком Origin
$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.HeadersОтображает заголовки Access-Control-*, если они присутствуют.
Примеры использования
Отладка ошибки браузера "CORS заблокирован" во фронтенде
Когда fetch/XHR завершается ошибкой CORS, проверьте, возвращает ли сервер необходимые заголовки Access-Control-* для вашего Origin и типа запроса.
- Подтвердите, что Access-Control-Allow-Origin соответствует источнику вашего приложения
- Если используются куки/аутентификация, проверьте, что Access-Control-Allow-Credentials равен true (и источник не является подстановочным знаком)
- Убедитесь, что присутствует Vary: Origin при разрешении нескольких источников
Проверка предварительного запроса для Authorization / пользовательских заголовков
Большинство аутентифицированных вызовов API запускают предварительный запрос из-за Authorization или нестандартных типов контента. Этот инструмент помогает убедиться, что ответы OPTIONS разрешают требуемый метод и заголовки.
- Убедитесь, что Access-Control-Allow-Methods включает POST/PUT/PATCH/DELETE по необходимости
- Убедитесь, что Access-Control-Allow-Headers включает authorization, content-type и необходимые X-* заголовки
- Обнаружьте отсутствие allow-methods/allow-headers до развертывания
Проверка безопасности политики CORS
Неправильные настройки CORS могут непреднамеренно раскрыть приватные API вредоносным сайтам (особенно с учётными данными). Используйте результаты, чтобы выявить рискованные шаблоны.
- Обнаружьте подстановочный источник в сочетании с учётными данными
- Обнаружьте шаблоны отражения источника, которые разрешают произвольные сайты
- Отметьте разрешение Origin: null, если оно не предполагалось
Улучшение производительности за счёт кэширования предварительного запроса
Предварительные запросы добавляют циклы обмена и задержку. Правильный Max-Age может сократить повторные проверки предварительных запросов для стабильных API.
- Убедитесь, что Access-Control-Max-Age присутствует, когда это уместно
- Сократите повторные вызовы OPTIONS для частого трафика API
❓ Frequently Asked Questions
❓Что такое CORS простыми словами?
CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который контролирует, может ли веб-страница из одного источника (схема + хост + порт) читать ответы из другого источника. Он полагается на определённые заголовки ответа Access-Control-*.❓Когда браузер отправляет предварительный запрос (OPTIONS)?
❓Почему "Access-Control-Allow-Origin: *" опасен с учётными данными?
❓Зачем нужен Vary: Origin?
❓Может ли CORS защитить мой API от клиентов вне браузера?
CORS применяется браузерами. Скрипты, работающие вне браузера (серверы, curl, мобильные приложения), могут обращаться к вашему API независимо от CORS. Для реального контроля доступа используйте аутентификацию, авторизацию и ограничение частоты запросов.❓Что указывать в «Заголовках запроса» при тестировании предварительного запроса?
❓Безопасно ли вставлять сюда URL-адреса?
Pro Tips
Предпочитайте белый список доверенных источников вместо отражения любого Origin. Относитесь к CORS как к конфигурации, критичной для безопасности.
Если вы используете куки/аутентификацию, установите Access-Control-Allow-Credentials: true И возвращайте явный источник (не «*»).
Добавьте Vary: Origin при разрешении нескольких источников или динамическом выборе разрешённого источника.
Установите разумное значение Access-Control-Max-Age, чтобы снизить задержку предварительных запросов для стабильных API.
Тестируйте как путь предварительного, так и реального запроса; некоторые настройки возвращают правильные заголовки для GET, но не для OPTIONS.
Экспортируйте JSON-отчёты и храните их вместе с изменениями конфигурации API-шлюза, чтобы быстро обнаруживать регрессии.
Additional Resources
Other Tools
- Форматер CSS
- Форматер HTML
- Форматер JavaScript
- Форматер PHP
- Выбор цвета
- Экстрактор спрайтов
- Base32 Бинарный Кодировщик
- Base32 Декодер
- Base32 Кодировщик
- Base58 Бинарный Кодировщик
- Base58 Декодер
- Base58 Кодировщик
- Base62 Бинарный Кодировщик
- Base62 Декодер
- Base62 Кодировщик
- Base64 Бинарный Кодировщик
- Декодер Base64
- Кодировщик Base64
- Hex Бинарный Кодировщик
- Hex Декодер
- Hex Кодировщик
- Форматер C#
- Форматер CSV
- Dockerfile Formatter
- Форматер Elm
- Форматер ENV
- Форматер Go
- Форматер GraphQL
- Форматер HCL
- Форматер INI
- Форматер JSON
- Форматер LaTeX
- Форматер Markdown
- Форматер Objective-C
- Php Formatter
- Форматер Proto
- Форматер Python
- Форматер Ruby
- Форматер Rust
- Форматер Scala
- Форматер shell-скриптов
- Форматер SQL
- Форматтер SVG
- Форматтер Swift
- Форматтер TOML
- Typescript Formatter
- Форматтер XML
- Форматтер YAML
- Форматтер Yarn
- Минификатор CSS
- Html Minifier
- Javascript Minifier
- Минификатор JSON
- Минификатор XML
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- Просмотрщик HTTP-заголовков
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDF в текст
- Тестер регулярных выражений
- Проверка позиций в SERP
- Поиск Whois