← Статьи

HTTP FIELD GUIDE

CORS и HTTP-запросы из браузера

Почему cURL работает, а тот же запрос с веб-страницы может завершиться ошибкой?

Почему браузер блокирует запрос?

Веб-страница подчиняется политике одного источника. Для междоменных вызовов fetch целевой сервер должен разрешить доступ заголовками CORS. Некоторые методы и заголовки вызывают предварительный OPTIONS-запрос. Если проверка не прошла, основной запрос может не отправиться.

Чем отличается cURL?

На cURL не распространяются браузерные правила CORS. Успех в терминале показывает доступность адреса с данного компьютера, но не право страницы читать ответ. Браузер также управляет заголовками Host и Cookie и может блокировать небезопасный HTTP с HTTPS-страницы.

Как искать причину?

В панели Network проверьте предварительный запрос, Origin и заголовки ответа. Сравните Access-Control-Allow-Origin и разрешённые методы и заголовки с запросом. Режим no-cors не решает проблему: он возвращает непрозрачный ответ, из которого нельзя прочитать статус, заголовки и тело. При отсутствии CORS используйте доверенный локальный клиент или защищённый ретранслятор.

Источники