【发布时间】:2018-12-19 01:23:15
【问题描述】:
我目前正在编写一个单元测试来检查是否支持 http/2。
是否有一个 curl 单行程序检查是否支持 http/2 并输出易于解析的响应?
【问题讨论】:
标签: unit-testing curl http2
我目前正在编写一个单元测试来检查是否支持 http/2。
是否有一个 curl 单行程序检查是否支持 http/2 并输出易于解析的响应?
【问题讨论】:
标签: unit-testing curl http2
支持 HTTP/2:
$ curl -sI https://curl.se -o/dev/null -w '%{http_version}\n'
2
不支持 HTTP/2(在这种情况下提供 1.1):
$ curl -sI http://curl.se -o/dev/null -w '%{http_version}\n'
1.1
(此命令行需要 curl 7.50.0 或更高版本才能工作)
【讨论】:
-k (curl -ksI ...) 运行。
运行
curl --version
并在功能列表中查找 HTTP2
【讨论】:
curl --version | grep -i http2
您可以在这里找到list of Tools for debugging, testing and using HTTP/2。
可能最简单的命令行是:
$ is-http2 www.cloudflare.com
但这需要npm install -g is-http2-cli
要使用curl 进行测试,您可能需要使用nghttp 库对其进行编译,在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 -kvso /dev/null --http2 https://app.domain.com:443
返回的
...
> GET / HTTP/2
...
< HTTP/2 302
...
这不是检查是否支持 HTTP2,而是检查 HTTP2 是否真的有效。
【讨论】:
-kvso /dev/null 是更详细选项列表的缩写形式:--insecure --verbose --silent --output /dev/null - 我建议咨询curl.haxx.se/docs/manpage.html 和 Ctrl+F 那里的选项以查看详细信息。