web-dev-qa-db-ja.com

CURLを使用したHTTP2が「サポートされていないプロトコル」を提供する

ここ の手順をすでに実行しているので、curl Unsupported Protocolオプションを使用するときに--http2がまだあります。同様に、CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_2_0に設定すると、プログラムはHTTP/2ではなくHTTP/1.1を使用して通信します。

プラットフォーム:VMware Player 7上のUbuntu 15.04。

Nghttp2-1.0.4を--prefix=/usr/localとともにインストールしたため、libnghttp2。*は/usr/local/libにあります。

これはcurl-7.43.0を構成するコードです。

./configure --with-nghttp2=/usr/local

結果は、HTTP2が有効になっていることを示しています。

    HTTP2 support:    enabled (nghttp2)

makeおよびSudo make installの後、次のコードはUnsupported Protocolを返します。

curl --http2 https://http2.akamai.com

Curlバージョンはnghttp2がサポートされていることを示していません:

curl 7.43.0 (i686-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps Gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

次に here からのアドバイスに従って、OpenSSL 1.0.2以降が必要です。/opt/opensslにインストールしたら、再構成しました。

./configure --with-nghttp2=/usr/local --with-ssl=/opt/openssl/lib

makeおよびSudo make install以降、すべての問題は同じままです。不思議なことに、curl --versionはOpenSSL/1.0.1fがまだアップグレードされていないため、上記と同じ情報を返します。

--http2オプションを正常に使用できるようにするためのヘルプは、大歓迎です。

17
Curioso

どうやら、少なくとも実行時には、正しいバージョンのcurlにリンクしていません。これが出力libcurl/7.38.0の意味です。鉱山の方がバージョン番号が高い。試す

LD_LIBRARY_PATH=/usr/local/lib curl <whatever> 

あなたのコマンドとして。または、念のため:

ldd `which curl` 

リストに表示される依存関係に注意してください。

6
dsign

curl 7.53.1 for Windows このツールは、http2リクエストをテストするのに非常に便利です。 OpenSSL、ngttp2、zlibとIPv6のサポートで構築されたWindows用のcurlのコンパイル済みビルドがあります。

1
Devendra

これは本当に私が正しく設定するのに役立ちます

0
khushbu