Перевірка CORS

Перевірте налаштування спільного використання ресурсів між джерелами (CORS) для будь-якої URL-адреси. Перегляньте заголовки відповіді Access-Control-*, виконайте опціональний попередній запит (OPTIONS) з власним джерелом/методом/заголовками та виявте поширені помилки налаштування, такі як символ підстановки з обліковими даними, відсутність Vary: Origin або надто широкі дозволені заголовки.

Loading…

Про інструмент CORS Checker

Вставте URL-адресу API або сторінки та перевірте, чи дозволять браузери запити між джерелами. Цей інструмент аналізує заголовки відповіді CORS, може виконати реалістичну перевірку попереднього запиту (OPTIONS) та виділяє ризиковані або пошкоджені налаштування (наприклад, "*" з обліковими даними, відсутність Vary: Origin або слабкі дозволені методи/заголовки).

Можливості

  • Перевірка заголовків CORS для будь-якої публічної URL-адреси (Access-Control-* та пов'язані заголовки).
  • Опціональна симуляція попереднього запиту (OPTIONS) з власним джерелом, методом запиту та заголовками запиту.
  • Слідування за перенаправленнями (до 10), щоб перевірити кінцеву точку, яку фактично відвідують браузери.
  • Перегляд сирих заголовків для повної прозорості та налагодження.
  • Результати + карта оцінок з фільтрацією "лише проблеми" для швидкого аналізу.
  • Аналіз Vary для виявлення відсутності Vary: Origin та інших пасток CORS, пов'язаних з кешуванням.
  • Експорт результатів у форматі JSON та звітів PDF для аудитів, завдань та документації.
  • Вбудовані рекомендації для поширених проблем: символ підстановки з обліковими даними, відображення джерела, null джерело, відсутність дозволених методів/заголовків, відсутність max-age та надто широкі дозволені заголовки.

🧭 Як використовувати for cors-checker

1

Введіть цільову URL-адресу

Вставте кінцеву точку, яку хочете протестувати (наприклад, https://api.example.com/resource).

2

Встановіть джерело, з якого тестуєте

Введіть джерело вашої фронтенд-програми (схема + хост), наприклад, https://app.example.com. Це значення, яке браузери відправляють у заголовку Origin.

3

Виберіть режим перевірки

Використовуйте Авто (рекомендовано) для аналізу як заголовків відповіді, так і поведінки попереднього запиту. Використовуйте Простий запит, якщо вам потрібен сценарій без попереднього запиту, або Лише попередній запит для виконання перевірок OPTIONS.

4

Налаштуйте деталі попереднього запиту (якщо застосовно)

Увімкніть "Виконати попередній запит (OPTIONS)" та встановіть Метод запиту та Заголовки запиту (розділені комами), щоб симулювати реальну поведінку попереднього запиту браузера (наприклад, авторизація, content-type). Перемкніть "Враховувати облікові дані", якщо ваш сценарій використання включає файли cookie або заголовки автентифікації.

5

Перегляньте результати та експортуйте

Перевірте результати/карту оцінок та деталі аналізу CORS. Увімкніть "Показати сирі заголовки" під час налагодження. Експортуйте JSON/PDF для обміну або зберігання в аудитах.

Технічні характеристики

Модель запиту

Інструмент перевіряє заголовки CORS для цільової URL-адреси та може опціонально виконати попередній запит (OPTIONS), використовуючи надане джерело, метод та запитувані заголовки. Підтримується слідування за перенаправленнями.

НалаштуванняПоведінкаЗа замовчуванням
Режим перевіркиАвто, Простий запит або Тільки попередній запитАвто
Виконати попередній запит (OPTIONS)Якщо увімкнено, виконує симуляцію попереднього запиту OPTIONSУвімкнено
ДжерелоЗначення заголовка Origin, що використовується для аналізу/попереднього запитуhttps://example.com
Метод запитуЗначення Access-Control-Request-Method для попереднього запитуGET
Заголовки запитуAccess-Control-Request-Headers (через кому) для попереднього запитуПорожньо
Слідувати за перенаправленнямиСлідує ланцюжку перенаправлень до кінцевої URL-адресиУвімкнено
Макс. перенаправленьОбмеження перенаправлень для запобігання циклів10 (діапазон 0–20)
ТаймаутОбмеження часу на виконання запиту15000 мс
User-AgentІдентифікує user agent запитуEncode64Bot/1.0 (+https://encode64.com)
Приватні мережіБлокує доступ до діапазонів приватних мереж для безпекиВимкнено (приватні мережі не дозволені)

Проаналізовані заголовки (основний набір CORS)

Аналізатор зосереджується на стандартних заголовках відповіді та запиту CORS, що використовуються браузерами та попередніми перевірками.

ЗаголовокПризначення
Access-Control-Allow-OriginЯкі джерела дозволено
Access-Control-Allow-CredentialsЧи дозволено файли cookie/облікові дані (вимагає не універсального джерела)
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 OriginOrigin: null може з'являтися в ізольованих iframe або файлових контекстах; дозвіл на це часто ризикований
Відсутні Allow-Methods / Allow-HeadersПопередня перевірка може не вдатися, якщо сервер не дозволяє явно метод/заголовки
Надмірно широкі Allow-HeadersДозвіл занадто багатьох заголовків може розширити поверхню атаки
Відсутній Max-AgeПопередня перевірка може виконуватися занадто часто, додаючи затримки
CORS — це механізм примусу браузера. Сервери все ще можуть бути доступні між різними джерелами через клієнтів, що не є браузерами; розглядайте CORS як частину ширшої стратегії безпеки, а не єдиний засіб контролю.

Командний рядок

Використовуйте ці команди для відтворення поведінки 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-*, якщо вони присутні.

Якщо ваш фронтенд використовує файли cookie або автентифікацію, уникайте дозвільних налаштувань CORS. Надавайте перевагу явному списку дозволених джерел та включайте Vary: Origin, коли відповіді відрізняються залежно від джерела.

Випадки використання

Налагодження помилки браузера "CORS заблоковано"

Коли fetch/XHR завершується помилкою CORS, перевірте, чи сервер повертає необхідні заголовки Access-Control-* для вашого джерела та типу запиту.

  • Підтвердьте, що Access-Control-Allow-Origin відповідає джерелу вашої програми
  • Якщо використовуються файли cookie/автентифікація, перевірте, що 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)?

Попередній запит надсилається, коли запит не є "простим", наприклад, при використанні методів на кшталт POST з певними типами вмісту або при надсиланні заголовків, таких як Authorization або спеціальні заголовки X-*. Браузер перевіряє дозволи через OPTIONS перед надсиланням реального запиту.

Чому "Access-Control-Allow-Origin: *" небезпечно з обліковими даними?

Браузери вимагають явного вказання джерела при використанні облікових даних. Використання символу підстановки з обліковими даними є недійсним для запитів з обліковими даними та вказує на ризиковану конфігурацію. Надавайте перевагу явному списку довірених джерел.

Навіщо потрібен Vary: Origin?

Якщо ваш сервер повертає різні значення Access-Control-Allow-Origin залежно від джерела запиту, кеші повинні враховувати джерело, щоб уникнути надання відповіді, призначеної для одного сайту, іншому. Vary: Origin допомагає запобігти змішуванню кешу та пов'язаних проблем безпеки.

Чи може CORS захистити мій API від клієнтів, які не є браузерами?

Ні. CORS забезпечується браузерами. Скрипти, що працюють поза браузером (сервери, curl, мобільні додатки), можуть звертатися до вашого API незалежно від CORS. Для реального контролю доступу використовуйте автентифікацію, авторизацію та обмеження частоти запитів.

Що слід вказати в "Заголовках запиту" при тестуванні попереднього запиту?

Перерахуйте заголовки, які надсилатиме ваш фронтенд, через кому (наприклад, authorization, content-type, x-request-id). Це імітує Access-Control-Request-Headers і перевіряє, чи дозволяє їх сервер.

Безпечно вставляти сюди URL-адреси?

Інструмент виконує запити на стороні сервера до наданої URL-адреси та блокує цілі в приватних мережах. Уникайте включення секретів у URL-адреси (наприклад, токенів у рядках запиту) та віддавайте перевагу публічним кінцевим точкам, яким ви довіряєте.

Pro Tips

Security Tip

Віддавайте перевагу білому списку довірених джерел замість відображення будь-якого Origin. Розглядайте CORS як конфігурацію, чутливу до безпеки.

Security Tip

Якщо ви використовуєте cookies/авторизацію, встановіть Access-Control-Allow-Credentials: true І повертайте явне джерело (не "*").

Security Tip

Додайте Vary: Origin, коли дозволяєте кілька джерел або динамічно вибираєте дозволене джерело.

Performance Tip

Додайте розумний Access-Control-Max-Age, щоб зменшити затримку попереднього запиту для стабільних API.

Best Practice

Тестуйте як шлях попереднього, так і реального запиту; деякі налаштування повертають правильні заголовки для GET, але не для OPTIONS.

CI Tip

Експортуйте звіти JSON та зберігайте їх поряд із змінами конфігурації шлюзу API, щоб швидко виявляти регресії.

Additional Resources

Other Tools