#c
#c
Вопрос:
в libcurl есть опция CURLOPT_HTTP_VERSION со следующими параметрами:
CURL_HTTP_VERSION_2TLS:
Попробуйте HTTP 2 только через TLS (HTTPS).
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE:
Выдавать HTTP-запросы, отличные от TLS, с использованием HTTP / 2
Не работает ли http 2 автоматически при TLS-соединении? Может ли http 2 быть с открытым незашифрованным соединением?
Ответ №1:
Да, HTTP / 2 может работать без шифрования. Но большинство реализаций поддерживает только зашифрованные запросы. Что касается упомянутых параметров, они описаны в документации:
CURL_HTTP_VERSION_2TLS
Попробуйте HTTP 2 только через TLS (HTTPS). libcurl вернется к HTTP 1.1, если HTTP 2 не может быть согласован с сервером HTTPS. Для HTTP-серверов с открытым текстом libcurl будет использовать 1.1. (Добавлено в 7.47.0)
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
Выдавать HTTP-запросы, отличные от TLS, с использованием HTTP / 2 без обновления HTTP / 1.1. Требуется предварительное знание того, что сервер сразу поддерживает HTTP / 2. Запросы HTTPS по-прежнему будут выполнять HTTP / 2 стандартным способом с согласованной версией протокола при рукопожатии TLS. (Добавлено в 7.49.0)
Таким образом, CURL_HTTP_VERSION_2TLS имеет запасной вариант для протокола HTTP 1.1, а CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE пытается использовать только HTTP / 2 (с TLS для запроса HTTPS и без него для HTTP-запроса).