Що таке CORS і як це працює?
Що таке CORS?
CORS (Cross-Origin Resource Sharing) — це механізм безпеки у веб-розробці, який дозволяє або забороняє веб-браузерам надсилати запити до серверів на різних доменах. Це важливо для забезпечення безпеки веб-додатків, особливо коли додаток взаємодіє з ресурсами на сторонніх серверах.
Коли веб-браузер намагається надіслати запит до сервера на іншому домені, він повинен перевірити, чи це дозволено сервером. Цю перевірку називають "політикою, з якої можна отримувати ресурси".
Чому потрібен CORS?
CORS був введений для вирішення проблеми "крос-доменних запитів" у веб-браузерах. Веб-браузери за замовчуванням не дозволяють веб-сторінкам надсилати запити до ресурсів на інших доменах з міркувань безпеки. Це запобігає атакам, таким як Cross-Site Request Forgery (CSRF) та Cross-Site Scripting (XSS).
Наприклад, якщо веб-сторінка з домену example.com намагається запитати дані з сервера another-domain.com, браузер за замовчуванням заблокує такий запит, якщо сервер another-domain.com не вказав, що дозволяє доступ з іншого домену.
Як працює CORS?
Коли браузер надсилає запит з іншого домену (наприклад, через AJAX або Fetch), він автоматично додає заголовок Origin, який вказує домен, з якого був надісланий запит. Сервер, що отримує запит, перевіряє цей заголовок і вирішує, чи дозволити доступ до своїх ресурсів з цього домену.
- Заголовок
Origin:
Це заголовок, що надсилається з запитом і вказує домен, з якого був надісланий запит. Сервер повинен перевірити цей заголовок і вирішити, чи дозволити доступ. 2. Відповідь сервера:
Якщо сервер дозволяє доступ з певних джерел, він надсилає заголовки Access-Control-Allow-Origin у відповіді. Цей заголовок вказує, які домени можуть отримувати доступ до даних.
Приклад заголовка відповіді:
Access-Control-Allow-Origin: https://example.com
Це означає, що доступ до ресурсу дозволено лише з домену example.com.
3. Типи запитів:
- Preflight запит:
Якщо запит використовує нестандартні методи (наприклад, PUT, DELETE) або заголовки, браузер спочатку надсилає запит OPTIONS (preflight запит) до сервера, щоб дізнатися, чи дозволяє сервер такий запит.
- Простий запит:
Якщо запит використовує стандартні методи (GET, POST, HEAD) і стандартні заголовки, сервер може відразу надіслати дозвіл.
- Відповідь на Preflight запит:
Якщо запит є preflight (OPTIONS), сервер відповідає заголовками, які дозволяють або забороняють такі запити, наприклад:
Access-Control-Allow-Methods: GET, POST Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Origin: https://example.com
Переваги та обмеження CORS
-
Переваги:
-
Захист даних: CORS допомагає захистити ресурси сервера від несанкціонованого доступу з інших доменів.
-
Гнучкість: Сервер може налаштувати CORS, щоб дозволити доступ лише для певних джерел, що дозволяє створювати більш безпечні API.
-
Обмеження:
-
Ручна конфігурація сервера: Щоб використовувати CORS, сервер повинен явно вказати, що дозволяє доступ з інших доменів. Це вимагає додаткової конфігурації сервера.
-
Підтримка браузерами: CORS працює лише в браузерах, які підтримують цю політику безпеки. Однак більшість сучасних браузерів підтримують CORS.
Зміст
Що таке CORS?Чому потрібен CORS?Як працює CORS?Переваги та обмеження CORS
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.