cURL无法使用nghttp2

时间:2015-04-20 22:13:03

标签: curl http2 nghttp2

我想将http / 2与cURL一起使用。首先,当我尝试curl --http2 https://http2.akamai.com/ - "不支持#34; 协议时出错。我安装了nghttp2并重新安装了cURL,如here所述。错误消失了,我现在可以使用curl --http2获取数据。但页面https://http2.akamai.com/告诉我"此浏览器未启用HTTP / 2" ,而在Chrome中或直接通过nghttp2它会说" 你正在使用HTTP / 2!"

我使用mac os x并通过自制程序在最新版本中安装了所有依赖项。卷曲来源(7.41)我下载了here

2 个答案:

答案 0 :(得分: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 --http2 -kv https://http2.akamai.com/ 

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

答案 1 :(得分:0)

对于启用HTTP / 2的特定浏览器,该页面可能已列入白名单,因此它返回静态内容,因为它无法识别cURL。你可以set your user agent假装你是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/