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: разрешённые…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Какие настройки сервера нужны для корректной работы 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 и соблюдает требования безопасности, особенно при использовании кук и токенов авторизации.