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

Какие CORS-заголовки важны на практике и как их применять?

DOM и браузер

Важные CORS-заголовки: `Access-Control-Allow-Origin` (разрешённый origin), `-Methods`, `-Headers`, `-Credentials`, `-Max-Age`. Их задаёт сервер в ответе.

Заголовки ответа

Access-Control-Allow-Origin

Разрешённый источник (главный):

Access-Control-Allow-Origin: https://app.com
# или * (публично, без credentials)

Access-Control-Allow-Methods

Разрешённые методы (в ответе на preflight):

Access-Control-Allow-Methods: GET, POST, PUT, DELETE

Access-Control-Allow-Headers

Разрешённые заголовки запроса:

Access-Control-Allow-Headers: Content-Type, Authorization

Access-Control-Allow-Credentials

Разрешить cookie/credentials:

Access-Control-Allow-Credentials: true

При этом Allow-Origin не может быть * — только конкретный origin.

Access-Control-Max-Age

Кеш результата preflight (чтобы не слать OPTIONS каждый раз):

Access-Control-Max-Age: 86400

Access-Control-Expose-Headers

Какие заголовки ответа доступны JS-у клиента:

Access-Control-Expose-Headers: X-Total-Count

Заголовок запроса

  • Origin — браузер добавляет автоматически (источник).

Практика применения

  • Разрешать только доверенные origin (не * для приватных API).
  • При credentials — конкретный origin.
  • Обрабатывать preflight OPTIONS (обычно middleware cors).

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

Важные CORS-заголовки (ответ сервера): Access-Control-Allow-Origin (разрешённый источник), -Methods и -Headers (для preflight), -Credentials: true (cookie, тогда origin не *), -Max-Age (кеш preflight), -Expose-Headers (доступные клиенту заголовки). Браузер шлёт Origin. Разрешать только доверенные origin.

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