Что такое CORS preflight request и в каких случаях браузер отправляет его? Когда запрос может быть отправлен без preflight?

CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который ограничивает выполнение веб-страницами запросов к ресурсам с другого домена, отличного от домена, с которого загружена страница.

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

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

CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который ограничивает выполнение веб-страницами запросов к ресурсам с другого домена, отличного от домена, с которого загружена страница.

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

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

CORS (Cross-Origin Resource Sharing) — это механизм безопасности браузера, который ограничивает выполнение веб-страницами запросов к ресурсам с другого домена, отличного от домена, с которого загружена страница.

Как работает CORS: Когда веб-страница пытается сделать запрос к другому домену, браузер проверяет, разрешает ли сервер этого домена такие запросы. Сервер должен в ответе содержать специальные заголовки (например, Access-Control-Allow-Origin), которые указывают, какие источники (домены) могут обращаться к его ресурсам.

Простые запросы и предварительные (preflight) запросы:

  • Простые запросы — это запросы с методами GET, POST или HEAD и с определённым набором заголовков и типов контента (например, application/x-www-form-urlencoded). Для таких запросов браузер сразу отправляет основной запрос и проверяет ответ.
  • Предварительные запросы (preflight OPTIONS) — это запросы с методом OPTIONS, которые браузер отправляет перед основным запросом, если он не является простым (например, используется метод PUT, DELETE, или нестандартные заголовки). Цель — проверить, разрешает ли сервер такой запрос.

На что смотрит CORS при отправке запроса:

  • Заголовок Origin — указывает источник запроса.
  • Сервер в ответе должен вернуть Access-Control-Allow-Origin с разрешённым источником или *.
  • Для preflight запросов сервер также должен вернуть Access-Control-Allow-Methods (разрешённые методы) и Access-Control-Allow-Headers (разрешённые заголовки).

Если эти условия не выполняются, браузер блокирует доступ к ответу из JavaScript, обеспечивая безопасность.

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

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

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

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