首页 > 解决方案 > libcurl 未在 OpenWrt 上将 POST 请求升级到 HTTP/2

问题描述

当我用 编译 OpenWrt 图像时make menuconfig,我选中 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 是否存在已知问题?或者这是其他人已经遇到并已解决的问题?没有有用的调试数据,我已经挖掘了所有这些数据,有点不知所措。

编辑:我使用 mbedTLS 作为我的 TLS/SSL 后端,以防万一。

编辑更多信息:运行此代码段:

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。但是,mbedtls 和 libnghttp2 都有一个 .so。

对此的任何帮助都会很有用。

标签: libcurlhttp2openwrtfirmwarenghttp2

解决方案


推荐阅读