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
...