Почему CORS нормально работает в браузере, а в Postman нет

«Почему CORS нормально работает в браузере, а в Postman нет» — вопрос из категории Безопасность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Postman и другие HTTP-клиенты не являются браузерами и не выполняют CORS-проверки, так как работают на уровне HTTP-запросов без ограничений Same-Origin Policy.

Пример:

// Браузер заблокирует запрос, если сервер не разрешил CORS
fetch('https://api.example.com/data')
  .then(response => response.json())
  .catch(err => console.log('CORS error:', err));

В Postman этот же запрос пройдет, так как там нет политики безопасности браузеров.