Перевірка CORS
Перевірте налаштування спільного використання ресурсів між джерелами (CORS) для будь-якої URL-адреси. Перегляньте заголовки відповіді Access-Control-*, виконайте опціональний попередній запит (OPTIONS) з власним джерелом/методом/заголовками та виявте поширені помилки налаштування, такі як символ підстановки з обліковими даними, відсутність Vary: Origin або надто широкі дозволені заголовки.
Можливості
- Перевірка заголовків CORS для будь-якої публічної URL-адреси (Access-Control-* та пов'язані заголовки).
- Опціональна симуляція попереднього запиту (OPTIONS) з власним джерелом, методом запиту та заголовками запиту.
- Слідування за перенаправленнями (до 10), щоб перевірити кінцеву точку, яку фактично відвідують браузери.
- Перегляд сирих заголовків для повної прозорості та налагодження.
- Результати + карта оцінок з фільтрацією "лише проблеми" для швидкого аналізу.
- Аналіз Vary для виявлення відсутності Vary: Origin та інших пасток CORS, пов'язаних з кешуванням.
- Експорт результатів у форматі JSON та звітів PDF для аудитів, завдань та документації.
- Вбудовані рекомендації для поширених проблем: символ підстановки з обліковими даними, відображення джерела, null джерело, відсутність дозволених методів/заголовків, відсутність max-age та надто широкі дозволені заголовки.
🧭 Як використовувати for cors-checker
Введіть цільову URL-адресу
Вставте кінцеву точку, яку хочете протестувати (наприклад, https://api.example.com/resource).
Встановіть джерело, з якого тестуєте
Введіть джерело вашої фронтенд-програми (схема + хост), наприклад, https://app.example.com. Це значення, яке браузери відправляють у заголовку Origin.
Виберіть режим перевірки
Використовуйте Авто (рекомендовано) для аналізу як заголовків відповіді, так і поведінки попереднього запиту. Використовуйте Простий запит, якщо вам потрібен сценарій без попереднього запиту, або Лише попередній запит для виконання перевірок OPTIONS.
Налаштуйте деталі попереднього запиту (якщо застосовно)
Увімкніть "Виконати попередній запит (OPTIONS)" та встановіть Метод запиту та Заголовки запиту (розділені комами), щоб симулювати реальну поведінку попереднього запиту браузера (наприклад, авторизація, content-type). Перемкніть "Враховувати облікові дані", якщо ваш сценарій використання включає файли cookie або заголовки автентифікації.
Перегляньте результати та експортуйте
Перевірте результати/карту оцінок та деталі аналізу 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 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-* для вашого джерела та типу запиту.
- Підтвердьте, що 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)?
❓Чому "Access-Control-Allow-Origin: *" небезпечно з обліковими даними?
❓Навіщо потрібен Vary: Origin?
❓Чи може CORS захистити мій API від клієнтів, які не є браузерами?
CORS забезпечується браузерами. Скрипти, що працюють поза браузером (сервери, curl, мобільні додатки), можуть звертатися до вашого API незалежно від CORS. Для реального контролю доступу використовуйте автентифікацію, авторизацію та обмеження частоти запитів.❓Що слід вказати в "Заголовках запиту" при тестуванні попереднього запиту?
❓Безпечно вставляти сюди URL-адреси?
Pro Tips
Віддавайте перевагу білому списку довірених джерел замість відображення будь-якого Origin. Розглядайте CORS як конфігурацію, чутливу до безпеки.
Якщо ви використовуєте cookies/авторизацію, встановіть 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