Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: CORS, cross-origin, HTTP headers, preflight request, Access-Control-Allow-Origin

Как браузер получает информацию о CORS-правилах?

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

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

Браузер получает информацию о CORS-правилах из HTTP-заголовков ответа сервера. Когда выполняется кросс-доменный запрос, браузер автоматически добавляет заголовок Origin. Сервер в ответе указывает заголовок Access-Control-Allow-Origin, который разрешает или запрещает доступ. Для сложных запросов браузер сначала отправляет предварительный OPTIONS-запрос (preflight), чтобы узнать разрешенные методы и заголовки.

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

Как браузер узнает о CORS-правилах

Когда веб-страница пытается сделать запрос к другому домену (кросс-доменный запрос), браузер применяет политику CORS (Cross-Origin Resource Sharing). Браузер не имеет встроенной базы правил CORS — он получает их от сервера, к которому обращается запрос. Это происходит через специальные HTTP-заголовки в ответе сервера.

Процесс получения правил

Браузер отправляет запрос с заголовком Origin, указывающим источник (протокол, домен, порт) текущей страницы. Сервер анализирует этот заголовок и решает, разрешен ли доступ. Если да, он добавляет в ответ заголовок Access-Control-Allow-Origin с тем же значением или звездочкой (*), разрешающей все источники. Браузер проверяет этот заголовок и, если он совпадает с источником страницы, разрешает доступ к данным.

Preflight-запросы

Для запросов, которые могут изменить данные (например, методы PUT, DELETE, или с нестандартными заголовками), браузер сначала отправляет предварительный OPTIONS-запрос (preflight). Этот запрос содержит заголовки Access-Control-Request-Method и Access-Control-Request-Headers. Сервер отвечает заголовками Access-Control-Allow-Methods, Access-Control-Allow-Headers и Access-Control-Max-Age, указывая разрешенные методы, заголовки и время кэширования правил. Только после успешного preflight браузер отправляет основной запрос.

Пример кода

// Пример серверного ответа на Express.js
app.get('/data', (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', 'https://example.com');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  res.json({ message: 'Доступ разрешен' });
});

// Preflight-обработчик
app.options('/data', (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', 'https://example.com');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  res.setHeader('Access-Control-Max-Age', 86400); // 24 часа
  res.sendStatus(204);
});

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Networks

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

#CORS

#cross-origin

#HTTP headers

#preflight request

#Access-Control-Allow-Origin

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию