Sobes.tech
Назад к вопросам
Junior — Middle
62

Какова основная цель использования механизма CORS в веб-разработке?

Компании, где спрашивали
30бит30бит

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

CORS нужен, чтобы безопасно разрешать браузеру делать запросы между разными доменами. Это механизм контроля доступа на стороне браузера, который позволяет серверу явно сказать, кому и что можно. Без CORS браузер по умолчанию блокирует такие запросы из соображений безопасности.

Определение:

CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет серверу указать, какие внешние источники могут обращаться к его ресурсам из браузера. Он расширяет политику Same-Origin Policy, но не отменяет её, а управляет исключениями через HTTP-заголовки.

Пример использования:

Допустим, фронтенд работает на https://frontend.example, а API — на https://api.example. Браузер заблокирует запрос с фронтенда к API, если сервер не разрешит этот origin через CORS-заголовки.

Access-Control-Allow-Origin: https://frontend.example
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Content-Type, Authorization

В таком случае браузер разрешит фронтенду читать ответ от API.

Пояснение кода:

Код здесь нужен не для Python, а для иллюстрации HTTP-настроек CORS.

  1. Access-Control-Allow-Origin указывает, какой origin может обращаться к ресурсу.
  2. Access-Control-Allow-Methods ограничивает разрешённые HTTP-методы.
  3. Access-Control-Allow-Headers определяет, какие заголовки можно отправлять в запросе.
  4. Если запрос «сложный», браузер сначала делает preflight-запрос OPTIONS, чтобы проверить разрешения.

Ключевые моменты:

  • CORS нужен для безопасного междоменных запросов из браузера.
  • Решение о доступе принимает сервер через HTTP-заголовки.
  • CORS не защищает сам сервер от всех запросов, а регулирует доступ браузера.
  • Политика Same-Origin Policy действует по умолчанию, CORS делает исключения.
  • Для простых запросов preflight может не понадобиться, для сложных — обычно нужен OPTIONS.
  • Ошибки CORS чаще всего связаны с неверным origin, методами или заголовками.