Unit testing Curl:一个测试http/2支持的线性程序

Unit testing Curl:一个测试http/2支持的线性程序,unit-testing,curl,http2,Unit Testing,Curl,Http2,我目前正在编写一个单元测试,以检查是否支持http/2 是否有一个curl一行程序来检查是否支持http/2,并输出易于解析的响应?http/2受支持: $ curl -sI https://curl.haxx.se -o/dev/null -w '%{http_version}\n' 2 不支持HTTP/2(在本例中为1.1服务): (此命令行需要curl 7.50.0或更高版本)在这里您可以找到一个 命令行中最简单的方法可能是: $ is-http2 www.cloudflare.com

我目前正在编写一个单元测试,以检查是否支持
http/2

是否有一个
curl
一行程序来检查是否支持
http/2
,并输出易于解析的响应?

http/2受支持:

$ curl -sI https://curl.haxx.se -o/dev/null -w '%{http_version}\n'
2
不支持HTTP/2(在本例中为1.1服务):

(此命令行需要curl 7.50.0或更高版本)

在这里您可以找到一个

命令行中最简单的方法可能是:

$ is-http2 www.cloudflare.com
但这需要
npm安装-g is-http2-cli

对于使用
curl
进行测试,您可能需要使用库进行编译,在macOS中,可以使用
brew
进行编译,您可以使用:

$ brew install curl --with-nghttp2
然后你可以使用@daniel stenberg在回答中的建议

$ curl -sI https://curl.haxx.se -o/dev/null -w '%{http_version}\n'
如果支持http2,您将得到一个2。

运行

curl --version
并在我使用的功能列表中查找HTTP2

curl -kvso /dev/null --http2 https://app.domain.com:443
返回的

...
> GET / HTTP/2
...
< HTTP/2 302
...
。。。
>GET/HTTP/2
...

这不是检查是否支持HTTP2,而是检查HTTP2是否实际工作。

谢谢您的回答。您的答案还包含使用其他工具的选项,这非常有用。但是,由于Daniel Stenberg的回答更符合原始问题,我将接受他的回答。您知道,@nbari is-http2和curl输出是不同的:curl-sI HTTP/2 200 server:Apache。。。is-http2×HTTP/2不受支持,它给了我以下错误:curl:未知--写出变量:“HTTP\u version”与
-k
一起运行(
curl-ksI…
)如果您正在测试具有自签名certs.One-liner的服务器:
curl--version | grep-i http2
,那么问题在于对特定网站的http2支持,而不是对curl本身的支持
-kvso/dev/null
是更详细的选项列表的缩写:
--unsecure--verbose--silent--output/dev/null
-我建议在那里查看这些选项并按住Ctrl+F键以查看详细信息。
...
> GET / HTTP/2
...
< HTTP/2 302
...