我可以使用 CURL 获取 HTTP/2 headers 吗?

Will I be able to use CURL to get HTTP/2 headers?

现在我使用 curl -I 检索 headers。

在浏览器即将采用 HTTP/2 时,站点是否会采用不同的服务方式 headers with HPACK,这将使我对 curl 命令的使用无效?

是的,您可以使用 curl 查看和发送带有 HTTP/2 的 HTTP headers,就像您使用 HTTP/1.

一样

curl 支持 HTTP/2 并且它被实现为一种翻译层。这意味着它显示并“假装”headers 工作 1.1 风格。它将 headers 显示为文本,并在回调中发送 headers,就像在 1.1 中所做的那样。我们这样做是为了让脚本和应用程序通过 curl 获得非常平滑且基本上不可见的过渡路径 HTTP/2。

在内部,这当然是通过在显示它们之前解压缩接收到的 headers 以及在发送它们时压缩它们之前显示它们来完成的。

我相信这取决于卷曲版本。 HTTP/2 已添加到 curl 7.36.x IIRC 中?不是所有的发行版都有那个版本?

这是 curl 7.41.0 在 HTTP/2 上对 https://google.com

curl --http2 -I -v https://google.com
* Rebuilt URL to: https://google.com/
*   Trying 173.194.123.1...
* Connected to google.com (173.194.123.1) port 443 (#0)
* ALPN, offering h2-14, http/1.1

* ALPN, server accepted to use h2-14
* Server certificate:
*        subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=*.google.com
*        start date: 2015-03-11 16:13:43 GMT
*        expire date: 2015-06-09 00:00:00 GMT
*        subjectAltName: google.com matched
*        issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
*        SSL certificate verify ok.
* Using HTTP2    

编辑:更正,curl --http2 需要编译 nghttp2 才能工作 https://nghttp2.org/

curl --version 
curl 7.41.0 (x86_64-unknown-linux-gnu) libcurl/7.41.0 OpenSSL/1.0.2b zlib/1.2.8 nghttp2/0.7.8-DEV
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets