Применять HTTP / 1.1 вместо HTTP / 2

Я размещаю файл на сервере, который выбирается CocoaPods как часть пакета. CocoaPods использует curl для извлечения этого. Curl 7.54.0 в последней версии MacOS 10.14.2 (18C54) имеет Жук что вызывает проблемы с файлами, полученными через HTTP / 2. Это означает, что разработчики, использующие мой модуль, продолжают получать сбои установки из-за ошибки curl.

Поскольку curl используется внутри Cocoapods, я не могу предоставить переключатели командной строки для curl (по крайней мере, я не думаю, что Cocoapods предоставляет способ сделать это).

Есть ли способ, используя конфигурацию Apache, htaccess или PHP, я могу использовать HTTP / 1.1?

0

Решение

Вы можете решить, какую версию использовать, установив опцию CURLOPT_HTTP_VERSION

// default, lets CURL decide which version to use
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_NON);

// forces HTTP/1.0
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

// forces HTTP/1.1
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
0

Другие решения

cURL имеет переключатель командной строки -http1.1, в PHP это может быть:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

… это по крайней мере то, что документация говорит.


mod_rewrite может также использоваться, чтобы запретить HTTP/2.0 (но понятия не имею, как это переключить):

RewriteCond %{SERVER_PROTOCOL} ^HTTP/2\.0$ [NC]
RewriteRule . [F,L]

Я думаю, что конфигурация виртуального хоста является наиболее надежной (это не будет работать в .htaccess файл):

PolicyVersion enforce HTTP/1.1
0