2

我想将 http/2 与 cURL 一起使用。首先,当我尝试此操作时出现错误curl --http2 https://http2.akamai.com/- "Protocol not supported"。我安装了 nghttp2 并重新安装了 cURL,就像这里描述的那样。错误消失了,我现在可以获取数据curl --http2。但是页面https://http2.akamai.com/告诉我“此浏览器未启用 HTTP/2”,而在 chrome 中或直接通过 nghttp2 显示“您现在正在使用 HTTP/2!” .

我正在使用 mac os x 并通过自制软件将所有依赖项安装在最新版本中。我在这里下载的 curl 源代码 (7.41) 。

4

2 回答 2

4

您可能没有运行新构建的 curl,或者您的新 curl 构建正在使用以前的 libcurl 安装。调用“ curl --version”并确保它列出“HTTP2”作为支持(包含在功能中)。

您还需要确保使用支持 ALPN(用于 HTTP/2 over TLS)的 TLS 库版本构建 curl。如果使用 openssl 构建,则需要 1.0.2 版(或更高版本)。

我刚刚在https://http2.akamai.com/上尝试过,它显示“您现在正在使用 HTTP/2!” 当我像这样尝试我的 curl 构建时就好了:

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

您可以查看详细输出,您应该看到 ALPN 提供以及 curl 和服务器同意使用的协议。

于 2015-04-21T06:29:46.803 回答
0

对于启用 HTTP/2 的特定浏览器,该页面可能已列入白名单,因此它返回静态内容,因为它无法识别 cURL。您可以将您的用户代理设置为假装您是 Chrome,例如

curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/41.0.742.112 Safari/534.30" --http2 https://http2.akamai.com/
于 2015-04-20T22:18:47.530 回答