Применять HTTP / 1.1 вместо HTTP / 2 - PullRequest
0 голосов
/ 01 февраля 2019

Я размещаю файл на сервере, который выбирается 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?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете решить, какую версию использовать, установив параметр 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 голосов
/ 01 февраля 2019

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 
...