Против чего борется CORS
Разбор вопроса «Против чего борется CORS» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Против чего борется CORS
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает, как CORS обеспечивает безопасность, ограничивая межсайтовые запросы, и знает его роль в современной веб-разработке. Важно показать понимание разницы между CORS и Same-Origin Policy, а также умение объяснить, как CORS предотвращает уязвимости.
Ключевые тезисы
- CORS (Cross-Origin Resource Sharing) борется с ограничениями политики Same-Origin Policy (SOP), которая запрещает запросы между разными доменами.
- CORS позволяет безопасно разрешать межсайтовые запросы, контролируя, какие домены могут получать доступ к ресурсам сервера.
- CORS защищает пользователей от атак, таких как CSRF (Cross-Site Request Forgery), ограничивая несанкционированные запросы.
- CORS требует явного указания разрешенных доменов, методов и заголовков в HTTP-заголовках сервера (например, Access-Control-Allow-Origin).
Подробный ответ
CORS (Cross-Origin Resource Sharing) — это механизм, который позволяет браузерам безопасно выполнять запросы к ресурсам на другом домене, если это явно разрешено сервером. Этот механизм был разработан для борьбы с ограничениями политики Same-Origin Policy (SOP), которая запрещает браузерам выполнять запросы к ресурсам на другом домене. SOP была создана для защиты пользователей от атак, таких как CSRF (Cross-Site Request Forgery), когда злоумышленник может заставить браузер пользователя выполнить нежелательные действия на другом сайте. Однако в современных веб-приложениях часто требуется взаимодействие между разными доменами, например, когда фронтенд на одном домене запрашивает данные с API на другом домене. CORS позволяет серверу явно указать, какие домены, методы и заголовки разрешены для кросс-доменных запросов. Это достигается с помощью специальных HTTP-заголовков, таких как Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers. Если сервер не поддерживает CORS или неправильно настроен, браузер блокирует запрос, чтобы защитить пользователя от потенциальных угроз. Таким образом, CORS обеспечивает баланс между безопасностью и функциональностью, позволяя безопасно выполнять кросс-доменные запросы.
Практические примеры
Пример 1
Предположим, у вас есть фронтенд-приложение на домене https://frontend.com, которому нужно запросить данные с API на домене https://api.example.com. Если API поддерживает CORS, он может добавить заголовок Access-Control-Allow-Origin: https://frontend.com, чтобы разрешить запросы с этого домена.
Пример 2
Если ваш запрос включает пользовательские заголовки или использует методы, отличные от GET/POST, браузер сначала отправляет предварительный запрос (preflight request) с методом OPTIONS. Сервер должен ответить с заголовками Access-Control-Allow-Methods и Access-Control-Allow-Headers, чтобы подтвердить, что такие запросы разрешены.
Частые ошибки
- Типичная ошибка — неправильная настройка заголовка
Access-Control-Allow-Origin. Например, использование*для всех доменов может быть опасно, если API содержит конфиденциальные данные. - Еще одна ошибка — игнорирование предварительных запросов (preflight), что приводит к ошибкам CORS для сложных запросов.
Связанные темы
- Same-Origin Policy (SOP) — политика браузеров, которая ограничивает взаимодействие между разными доменами.
- CSRF (Cross-Site Request Forgery) — тип атаки, который CORS помогает предотвратить.
- HTTP-заголовки, такие как Access-Control-Allow-Origin, Access-Control-Allow-Methods и Access-Control-Allow-Headers.
Follow-up вопросы
Что такое Same-Origin Policy и как она работает?
Уровень: basic
Same-Origin Policy (SOP) — это механизм безопасности браузера, который ограничивает взаимодействие между ресурсами разных доменов. Он разрешает запросы только в рамках одного источника (протокол, домен, порт).
Как браузер определяет, что запрос является кросс-доменным?
Уровень: intermediate
Браузер сравнивает протокол, домен и порт источника запроса с целевым ресурсом. Если хотя бы один из этих параметров отличается, запрос считается кросс-доменным.
Какие HTTP-заголовки связаны с CORS и как они используются?
Уровень: intermediate
Основные заголовки CORS: Access-Control-Allow-Origin (разрешает домены), Access-Control-Allow-Methods (разрешенные HTTP-методы), Access-Control-Allow-Headers (разрешенные заголовки запроса). Сервер использует их для контроля доступа.
Как работает предварительный запрос (preflight request) в CORS?
Уровень: advanced
Предварительный запрос (OPTIONS) отправляется браузером перед основным запросом для проверки разрешений сервера. Сервер отвечает, указывая, какие методы и заголовки разрешены.
Какие риски безопасности могут возникнуть при неправильной настройке CORS?
Уровень: advanced
Неправильная настройка CORS может привести к уязвимостям, таким как несанкционированный доступ к данным или CSRF-атаки. Например, если Access-Control-Allow-Origin установлен в * для чувствительных данных.
На основе чего написан axios
Разбор вопроса «На основе чего написан axios» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
В чем разница между fetch и axios
Разбор вопроса «В чем разница между fetch и axios» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.