make menuconfig を使用して OpenWrt イメージをコンパイルするときに、libcurl ボックスをチェックし、次に HTTP/2 サポートを追加するボックスをチェックし、nghttp2 ライブラリもチェックされていることを確認します。リクエストを行うコードでは、CURLOPT_HTTP_VERSION を CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE に設定しています。これは、サーバーがすべてのブラウザー リクエストで HTTP/2 を使用し、https 経由であるためです。
テストのために、HTTP/2 をサポートする Ubuntu マシンで curl をコンパイルし、OpenWrt で要求しているのと同じ URL に POST 要求を送信しました。要求では HTTP/2 が使用されました。OpenWrt の HTTP/2 に問題があることがわかっているのでしょうか? それとも、これは他の人が経験して修正した問題なのでしょうか? 役に立つデバッグ データはありません。すでにすべて調べましたが、途方に暮れています。
役に立つかもしれないので、TLS/SSL バックエンドとして mbedTLS を使用しています。
詳細情報を編集しました: このスニペットを実行しました:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_HTTP2);
そして、 が出力され0
、次のように実行されました:
printf("%d\n", curl_version_info(CURLVERSION_NOW)->features & CURL_VERSION_SSL);
と出力されました4
。libcurl を組み込み、http2 サポートと SSL サポートをチェックしてイメージをコンパイルしているにもかかわらず、実際に組み込まれるのは SSL だけです。ただし、.so
mbedtls と libnghttp2 の両方に があります。
これに関して何か助けがあれば助かります。