Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад

Что такое CORS, какие проблемы он решает и как обычно настраивается?

Вопрос проверяет понимание механизма защиты браузеров CORS и умение объяснить, как разрешать междоменные запросы.

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

CORS — это механизм безопасности браузера, который контролирует, какие домены могут отправлять запросы к вашему API. Он помогает предотвратить доступ веб-страниц к чужим сервисам без разрешения. Настройка обычно включает отправку заголовков Access-Control-Allow-Origin, Allow-Methods, Allow-Headers, а также обработку preflight-запросов OPTIONS. Правильная конфигурация позволяет безопасно работать с кросс-доменными API.

Длинный ответ

CORS: Cross-Origin Resource Sharing

Определение: CORS — механизм, позволяющий серверу контролировать доступ браузерных клиентов из других доменов.

1. Проблема, которую решает CORS

Браузер по умолчанию запрещает запросы с одного домена на другой (cross-origin), чтобы:

  • предотвратить кражу данных

  • запретить выполнение нежелательных запросов

  • ограничить XSS-атаки

То есть:

frontend.com → api.com   (по умолчанию запрещено)

CORS — механизм, позволяющий разрешить безопасные типы таких запросов.


2. Как работает CORS

При cross-origin запросе браузер может:

  1. Сделать обычный запрос (simple request)

  2. Сделать preflight-запрос методом OPTIONS

Preflight-request

Браузер спрашивает сервер:

OPTIONS /api/data
Origin: https://frontend.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Authorization

Сервер должен ответить:

Access-Control-Allow-Origin: https://frontend.com
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: Authorization

Если сервер не отвечает нужными заголовками — браузер блокирует запрос.


3. Основные CORS-заголовки

  1. Access-Control-Allow-Origin
    Указывает, какие домены разрешены.

    Примеры:

    Access-Control-Allow-Origin: *
    Access-Control-Allow-Origin: https://frontend.com
    
  2. Access-Control-Allow-Methods
    Доступные методы: GET, POST, PUT, DELETE, PATCH

  3. Access-Control-Allow-Headers
    Список разрешённых клиентских заголовков: Authorization, Content-Type, X-Requested-With

  4. Access-Control-Allow-Credentials
    Разрешает передавать куки и авторизационные данные.

    Access-Control-Allow-Credentials: true
    
  5. Access-Control-Max-Age
    Время кеширования preflight ответа.


4. Типичная настройка на сервере

На PHP:

php

header('Access-Control-Allow-Origin: https://frontend.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Authorization, Content-Type');

5. Лучшие практики настройки

  1. Не использовать * при авторизации
    Если нужны куки — нельзя использовать *.

  2. Разрешать только нужные домены
    Лучше список доменов, а не *.

  3. Кешировать preflight
    Чтобы уменьшить трафик OPTIONS.

  4. Учитывать, что CORS работает только в браузере
    Сервер-сервер запросы CORS не касаются.


6. Вывод

CORS — механизм безопасности браузеров, который разрешает или блокирует cross-origin запросы. Настраивается через несколько заголовков и позволяет безопасно предоставлять API фронтендам на других доменах.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Networks

Ключевые слова

#cors

Подпишись на PHP Developer в телеграм