ZaLinux.ru

Ошибка «curl: (1) Received HTTP/0.9 when not allowed» (РЕШЕНО)

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.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *