curl: отладка HTTP в терминале
cURL — стандартный инструмент отладки HTTP в терминале. Работает из коробки в Linux и macOS, есть в большинстве Docker-образов. Если нужно быстро проверить API, посмотреть заголовки ответа или отловить проблему с редиректом — одной строки достаточно.
Базовые флаги отладки
Самый частый сценарий — получить ответ и увидеть, что сервер отдал. Ключ -i выводит заголовки перед телом, -v включает подробный режим с деталями соединения.
Разница: -i показывает заголовки + тело, -v добавляет DNS-резолв, TLS-handshake и отладочную информацию до запроса.
HEAD-зазапрос проверяет доступность и метаданные ресурса без загрузки тела:
HEAD не гарантирует, что сервер поддерживает диапазоны или кэширование — это зависит от конфигурации.
Методы и тело запроса
По умолчанию curl отправляет GET. Для остальных методов — флаг -X.
Тело запроса передаётся через -d. Для JSON-API типичный паттерн:
Многострочный JSON удобнее читать в heredoc, если тело большое:
Для отправки формы или данных из файла:
Кастомные заголовки
Флаг -H добавляет или заменяет заголовок. Комбинация -H можно использовать несколько раз.
Переопределение заголовка Host полезно при отладке virtualhost или прокси:
Удалить стандартный заголовок можно через -H "Accept:" (пустое значение после двоеточия).
Авторизация и сертификаты
Базовая HTTP-авторизация через -u в формате user:password:
Для Bearer-токена — через заголовок:
-u передаёт credentials в открытом виде (если нет TLS). Для prod-серверов всегда используйте HTTPS.
При работе с самоподписанными сертификатами флаг -k отключает проверку:
Для known hosts и pinned-сертификатов:
Таймауты и сохранение ответа
По умолчанию curl ждёт бесконечно. Для скриптов и мониторинга ограничивайте время:
| Флаг | Назначение |
|---|---|
--max-time N | общий таймаут в секундах |
--connect-timeout N | таймаут подключения |
Сохранение ответа:
stdout перенаправляет тело ответа в пайп:
Редиректы
Curl не следует редиректам по умолчанию. Флаг -L включает автоматическое перенаправление:
Для отладки цепочки редиректов:
-L ограничивает глубину редиректов (по умолчанию 50). Бесконечный цикл редиректов — типичная причина зависания curl.
Комбинация флагов для полной картины при отладке API:
Эта строка покажет заголовки запроса и ответа, тело сохранит в файл, таймаут — 10 секунд.