PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как CORS обрабатывается на сервере?

DOM и браузер

CORS обрабатывается на сервере через ответные заголовки `Access-Control-Allow-, которыми сервер разрешает доступ определённым origin, методам и заголовкам. Для сложных запросов сервер отвечает на preflight OPTIONS`.**

Основные заголовки ответа

Access-Control-Allow-Origin: https://app.com   # какому origin можно
Access-Control-Allow-Methods: GET, POST, PUT    # какие методы
Access-Control-Allow-Headers: Content-Type, Authorization  # какие заголовки
Access-Control-Allow-Credentials: true          # разрешить cookie/credentials
Access-Control-Max-Age: 86400                    # кеш preflight

Обработка preflight

Для сложных запросов браузер шлёт OPTIONS. Сервер должен на него ответить с нужными заголовками и статусом 204/200, иначе основной запрос заблокируется.

// Express
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'https://app.com');
  res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type,Authorization');
  if (req.method === 'OPTIONS') return res.sendStatus(204);
  next();
});

Обычно используют готовое middleware (cors для Express).

Детали

  • Credentials + origin: при Allow-Credentials: true нельзя Origin: * — нужен конкретный origin.
  • Разрешать только доверенные origin, а не * для приватных API.

Коротко для собеседования

Сервер обрабатывает CORS ответными заголовками Access-Control-Allow-Origin/Methods/Headers/Credentials и отвечает на preflight OPTIONS (204). Обычно через middleware (cors). При credentials нельзя использовать * в origin; разрешают только доверенные источники.

Другие вопросы раздела