🌐CORS

Cross-Origin Resource Sharing. Браузер блокирует кросс-доменные запросы без CORS headers. Access-Control-Allow-Origin, preflight OPTIONS.

📖10 мин чтения📊Уровень 7📅16 апреля 2026 г.

Загрузка карты...

CORS решает проблему ограничения доступа к ресурсам из-за политики одного источника, позволяя безопасный обмен данными между доменами.

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

Что такое CORS и почему он важен

CORS решает проблему ограничения доступа к ресурсам из-за политики одного источника (Same-Origin Policy). Эта политика защищает данные от несанкционированного доступа, но ограничивает взаимодействие между доменами. CORS предоставляет разработчикам возможность разрешать доступ к ресурсам другим доменам при необходимости. Это особенно важно для современных веб-приложений, которые часто интегрируются с внешними API и сервисами, требуя безопасного обмена данными между различными источниками. Без CORS, веб-приложения были бы ограничены в своих возможностях взаимодействия с внешними ресурсами, что могло бы замедлить их развитие и интеграцию с новыми технологиями.

Как работает механизм CORS

Механизм CORS использует HTTP-заголовки. Основные заголовки включают:

  • Access-Control-Allow-Origin — указывает, какие домены могут обращаться к ресурсам.
  • Access-Control-Allow-Methods — определяет, какие HTTP-методы разрешены при доступе к ресурсу.
  • Access-Control-Allow-Headers — указывает, какие заголовки могут быть использованы при фактическом запросе.
  • Access-Control-Allow-Credentials — указывает, могут ли кросс-доменные запросы включать учетные данные, такие как куки.

Когда браузер делает кросс-доменный запрос, он сначала выполняет preflight-запрос, чтобы проверить, разрешает ли сервер такой доступ. Пример работы CORS: браузер отправляет preflight-запрос с методом OPTIONS, сервер отвечает с соответствующими заголовками, и только после этого основной запрос выполняется. Это обеспечивает безопасность, проверяя, что сервер поддерживает и разрешает заявленные методы и заголовки. Кроме того, CORS может быть настроен для ограничения доступа только к определённым ресурсам или методам, что позволяет более гибко управлять безопасностью приложения.

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

Настройка CORS обычно осуществляется на уровне серверной конфигурации. Например, в Apache можно использовать директиву Header для добавления необходимых заголовков. В Nginx это можно сделать с помощью директивы add_header. Инструменты для тестирования, такие как Postman, помогают проверить корректность настроек. Лучшие практики включают разрешение доступа только для доверенных доменов и ограничение методов и заголовков до необходимого минимума. Также важно регулярно проверять и обновлять настройки CORS в соответствии с изменениями в политике безопасности вашего приложения. Например, если ваш API изменяет поддерживаемые методы, необходимо обновить соответствующие заголовки CORS, чтобы избежать ошибок доступа.

Частые ошибки и их решение

Неправильная конфигурация заголовков — может привести к отказу в доступе. Проверьте правильность значений заголовков и убедитесь, что они соответствуют требованиям вашего приложения.

Отсутствие preflight-запроса — часто вызвано отсутствием поддержки определённых методов или заголовков на сервере. Убедитесь, что сервер правильно обрабатывает OPTIONS-запросы и возвращает необходимые заголовки.

Ошибки в логике разрешения доступа — убедитесь, что разрешены только необходимые домены и методы. Проверьте, что сервер не предоставляет доступ более широкому кругу доменов, чем необходимо, чтобы избежать потенциальных уязвимостей. Регулярно проводите аудит конфигурации CORS, чтобы убедиться, что она соответствует актуальным требованиям безопасности.

Часто задаваемые вопросы

CORS — это механизм, позволяющий веб-приложениям безопасно запрашивать ресурсы с других доменов, обеспечивая контроль доступа через HTTP-заголовки.