CORS

Cross-Origin Resource SharingProtocol

Що таке CORS

CORS (Cross-Origin Resource Sharing) — це механізм браузера, який визначає, чи може вебсторінка з одного джерела отримувати дані з іншого. Коротко: CORS це правила, за якими сайт на одному домені може звертатися до API на іншому.

Цей термін найчастіше чують фронтенд-розробники — зазвичай у момент, коли в консолі браузера з'являється помилка «blocked by CORS policy». Але розуміти, що таке CORS, корисно й бекендерам, і тестувальникам.

Як працює CORS

За замовчуванням браузери дотримуються політики одного джерела (Same-Origin Policy): скрипт на сторінці може вільно звертатися лише до того самого джерела. Джерело — це поєднання протоколу, домену й порту. Наприклад, app.example.com і api.example.com — уже різні джерела.

CORS дозволяє послабити це обмеження контрольовано. Коли браузер надсилає запит до іншого джерела, сервер у відповіді повідомляє через спеціальні HTTP-заголовки, кому дозволено отримувати дані. Головний із них — Access-Control-Allow-Origin. Якщо джерела сторінки там немає, браузер заблокує відповідь.

Для «складніших» запитів — наприклад, методів PUT чи DELETE або з нестандартними заголовками — браузер спершу надсилає попередній запит OPTIONS (preflight), щоб перевірити, чи сервер взагалі дозволяє таку взаємодію.

Чому CORS важливий

  • Захищає користувачів від того, щоб сторонні сайти читали їхні дані з інших сервісів.

  • Дає розробникам контроль над тим, хто може використовувати їхній API з браузера.

  • Дозволяє безпечно будувати архітектуру, де фронтенд і бекенд живуть на різних доменах.

  • Допомагає швидше діагностувати проблеми інтеграції між сервісами.

CORS — це не помилка, а механізм безпеки браузера. Щоб фронтенд міг працювати з API на іншому домені, потрібно правильно налаштувати заголовки на сервері, дозволивши лише довірені джерела, а не всі підряд.

Запитання та відповіді

Що таке CORS простими словами?

Це правила браузера, які вирішують, чи може сайт отримати дані з іншого домену.

Чому виникає помилка CORS?

Сервер не повернув заголовок, який дозволяє запити з домену вашої сторінки, тому браузер заблокував відповідь.

Як виправити помилку CORS?

Налаштувати на сервері заголовок Access-Control-Allow-Origin із потрібним доменом і, за потреби, дозволені методи та заголовки.

CORS захищає сервер?

Ні, CORS захищає насамперед користувача в браузері. Для захисту самого сервера потрібні автентифікація, авторизація та інші механізми.