Какие настройки сервера нужны для корректной работы CORS?

HTTP-заголовки, управляющие доступом Access-Control-Allow-Origin: домены, которым разрешён доступ Access-Control-Allow-Methods: допустимые HTTP-методы (GET, POST, etc.) Access-Control-Allow-Headers: разрешённые…

Короткий ответ

Что ответить на собеседовании

HTTP-заголовки, управляющие доступом Access-Control-Allow-Origin: домены, которым разрешён доступ Access-Control-Allow-Methods: допустимые HTTP-методы (GET, POST, etc.) Access-Control-Allow-Headers: разрешённые пользовательские заголовки Access-Control-Allow-Credentials: возможность передавать cookie и данные авторизации Обработка запросов OPTIONS preflight для предварительной проверки политики Настройка времени ожидания и кэширования с помощью Access-Control-Max-Age Практическое значение: защищает API от несанкционированного доступа и позволяет выполнять междоменные запросы без ошибок безопасности

Подробный разбор

Ответ с пояснениями

Какие настройки сервера нужны для корректной работы CORS?

  • HTTP-заголовки, управляющие доступом
  • Access-Control-Allow-Origin: домены, которым разрешён доступ
  • Access-Control-Allow-Methods: допустимые HTTP-методы (GET, POST, etc.)
  • Access-Control-Allow-Headers: разрешённые пользовательские заголовки
  • Access-Control-Allow-Credentials: возможность передавать cookie и данные авторизации
  • Обработка запросов OPTIONS preflight для предварительной проверки политики
  • Настройка времени ожидания и кэширования с помощью Access-Control-Max-Age
  • Практическое значение: защищает API от несанкционированного доступа и позволяет выполнять междоменные запросы без ошибок безопасности

Подробный ответ

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

Чтобы настроить CORS (Cross-Origin Resource Sharing) на сервере, необходимо корректно задать HTTP-заголовки: благодаря им браузер разрешает запросы, поступающие с других доменов. Сервер передаёт эти заголовки как в ответе на preflight-запрос (OPTIONS), так и на обычные запросы. К основным параметрам относятся разрешённые источники (origins), методы и заголовки, доступные клиенту.

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

  • Access-Control-Allow-Origin — наиболее важный заголовок. Он определяет, с каких источников (доменов) допускаются запросы. Можно задать конкретный домен, несколько доменов с помощью серверной логики или *, чтобы разрешить доступ всем источникам.
  • Access-Control-Allow-Methods — набор HTTP-методов, выполнение которых разрешено сервером, например GET, POST, PUT и DELETE.
  • Access-Control-Allow-Headers — перечень заголовков, которые клиенту разрешено передавать в запросе, например Authorization и Content-Type.
  • Access-Control-Allow-Credentials — параметр для случаев, когда нужно передавать cookies или данные авторизации. Его следует включить со значением true; при этом использовать * в Access-Control-Allow-Origin нельзя.
  • Preflight-запросы (OPTIONS) — сервер обязан правильно обрабатывать OPTIONS-запросы и подтверждать допустимые методы и заголовки.

Практический контекст

В современных web-приложениях, например при использовании React 18 и backend на Node.js (Express.js) или Spring Boot, CORS обычно задают через middleware, такое как пакет cors в Node.js. В продакшн-среде рекомендуется явно перечислять разрешённые домены, чтобы снизить риски безопасности. Кроме того, важно убедиться, что сервер корректно обрабатывает preflight-запросы с latency около 50ms и соблюдает требования безопасности, особенно при использовании кук и токенов авторизации.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку