curl поддерживает протокол HTTP с многочисленными опциями и вариациями. Утилита curl может говорить на таких версиях HTTP как 0.9, 1.0, 1.1, 2 и 3 в зависимости от параметров сборки и правильных параметров командной строки.
Но когда удалённый хост действительно отвечает по протоколу HTTP/0.9, работа curl завершается ошибкой, что HTTP/0.9 не разрешён, например:
curl 109.169.23.79:8083 curl: (1) Received HTTP/0.9 when not allowed
Всё дело в том, что начиная с curl 7.66.0, HTTP/0.9 по умолчанию отключён. Но это не проблема, поскольку этот протокол можно вновь включить опцией.
Опция --http0.9 указывает curl нормально обрабатывать ответ HTTP версии 0.9.
HTTP/0.9 — это ответы полностью без заголовка, поэтому с опцией --http0.9 вы также можете подключиться к серверам, отличными от HTTP, и при этом получить ответ, поскольку curl просто прозрачно понизит версию — если это разрешено.
Пример запуска с этой опцией:
curl --http0.9 109.169.23.79:8083
Какие версии HTTP поддерживает cURL. Как в cURL выбрать версию HTTP
Как уже было сказано, cURL поддерживает следующие версии HTTP: 0.9, 1.0, 1.1, 2 и 3.
Для их выбора используются следующие опции:
--http0.9
Рассмотрена чуть выше
-0, --http1.0
Указывает curl использовать HTTP версии 1.0 вместо внутренней предпочитаемой версии HTTP.
Этот параметр имеет приоритет над --http1.1 и --http2.
--http1.1
Указывает curl использовать HTTP версии 1.1.
Этот параметр имеет приоритет над -0, --http1.0 и --http2. Добавлено в версии 7.33.0.
--http2-prior-knowledge
Указывает curl выдавать HTTP-запросы, отличные от TLS, с использованием HTTP/2 без обновления HTTP/1.1. Требуется предварительное знание того, что сервер сразу поддерживает HTTP/2. Запросы HTTPS по-прежнему будут выполнять HTTP/2 стандартным способом с согласованной версией протокола в рукопожатии TLS.
--http2-prior-knowledge требует, чтобы базовая библиотека libcurl была собрана с поддержкой HTTP/2. Этот параметр переопределяет --http1.1 и -0, --http1.0 и --http2. Добавлено в версии 7.49.0.
--http2
Указывает curl использовать HTTP версии 2.
Смотрите также --http1.1 и --http3.
--http2 требует, чтобы базовая библиотека libcurl была собрана с поддержкой HTTP/2. Этот параметр переопределяет --http1.1 и -0, --http1.0 и --http2-prior-knowledge. Добавлено в версии 7.33.0.
--http3
ВНИМАНИЕ: это экспериментальная опция. Не использовать в производстве.
Указывает curl использовать HTTP версии 3 непосредственно для хоста и номера порта, используемого в URL-адресе. Обычная транзакция HTTP/3 будет выполнена на хосте, а затем будет перенаправлена через Alt-SVc, но эта опция позволяет пользователю обойти это, когда вы знаете, что цель говорит по HTTP/3 на данном хосте и порту.
Эта опция приведёт к сбою curl, если соединение QUIC не может быть установлено, при её использовании утилита не может самостоятельно вернуться к более низкой версии HTTP.
Смотрите также --http1.1 и --http2.
--http3 требует, чтобы базовая библиотека libcurl была собрана с поддержкой HTTP/3. Этот параметр переопределяет --http1.1 и -0, --http1.0 и --http2 и --http2-prior-knowledge. Добавлено в 7.66.0.
Связанные статьи:
- Как посмотреть HTTP заголовки (99.4%)
- Как отправить HTTP запрос OPTIONS из командной строки (РЕШЕНО) (90%)
- Как выгрузить файлы методом POST с помощью cURL. Как отправить форму в cURL (71.2%)
- При использовании s_client всегда возникает ошибка «HTTP/1.1 400 Bad Request» (РЕШЕНО) (60.1%)
- PHP cURL как установить значение User Agent ИЛИ как сделать так, чтобы сервера не блокировали запросы cURL? (57.1%)
- Как пользоваться lsof для просмотра открытых файлов (в Linux всё является файлами) (RANDOM - 50%)