强制使用HTTP / 1.1而不是HTTP / 2

时间:2019-01-31 22:00:10

标签: php apache curl cocoapods

我将文件托管在由CocoaPods作为Pod的一部分获取的服务器上。 CocoaPods内部使用curl来获取它。最新的macOS 10.14.2(18C54)中的Curl 7.54.0具有a bug,这会导致通过HTTP / 2提取的文件出现问题。这意味着使用我的Pod的开发人员由于curl漏洞而导致安装失败。

由于Cocoapods内部使用了curl,所以我无法提供用于卷曲的命令行开关(至少我不认为Cocoapods提供了这样做的方法)。

是否可以使用Apache配置,htaccess或PHP强制实施HTTP / 1.1?

2 个答案:

答案 0 :(得分:0)

cURL具有命令行开关-http1.1。在PHP中可能是:

curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

...至少就是documentation所说的。


mod_rewrite也可用于禁止HTTP/2.0(但不知道如何切换):

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

我认为虚拟主机配置是最可靠的(在.htaccess文件中无效):

PolicyVersion enforce HTTP/1.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);