我能使用CURL获取HTTP / 2标头吗?

时间:2015-02-24 18:38:09

标签: http curl serving http2

现在我使用curl -I来检索标头。

在即将采用的浏览器采用HTTP / 2时,网站会采用不同的方式为HPACK提供标头,这会使我对curl命令的使用无效吗?

2 个答案:

答案 0 :(得分:5)

我认为这取决于卷曲版本。在curl 7.36.x IIRC中添加了HTTP / 2?不是所有的发行版都有这个版本吗?

这是针对https://google.com

通过HTTP / 2卷曲7.41.0
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 

答案 1 :(得分:4)

是的,您可以像使用HTTP / 1一样使用curl查看和发送HTTP / 2的HTTP标头。

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

在内部,当然是通过在显示之前解压缩收到的标头,并在发送它们之前显示它们之前显示它们。