我正在编写一个单元测试,以检查是否支持http/2
。
是否有一个一行代码的curl
命令可以检查是否支持http/2
并输出易于解析的响应?
我正在编写一个单元测试,以检查是否支持http/2
。
是否有一个一行代码的curl
命令可以检查是否支持http/2
并输出易于解析的响应?
支持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 或更新版本。
自从curl 7.88.1版本开始,如果您构建curl以支持HTTP/3,则可以通过以下方法扩展上述单行命令以检查HTTP/3支持:
$ curl -sI --http3 https://curl.se -o/dev/null -w '%{http_version}\n'
3
运行
curl --version
在功能列表中寻找HTTP2
curl --version | grep -i http2
。它的作用是查询curl
的版本信息并检索其中是否包含HTTP/2相关内容。 - Stalinko在这里,你可以找到一个调试、测试和使用HTTP/2的工具列表。
从命令行中最简单的可能是:
$ is-http2 www.cloudflare.com
npm install -g is-http2-cli
命令。curl
进行测试,您可能需要使用nghttp库编译它,在macOS上可以使用brew
,您可以使用以下命令:$ brew install curl --with-nghttp2
$ curl -sI https://curl.haxx.se -o/dev/null -w '%{http_version}\n'
如果支持http2,你将获得2。
curl -sI https://curl.haxx.se
HTTP/2 200
server: Apache
...
is-http2 https://curl.haxx.se:443
× https://curl.haxx.se:443不支持HTTP/2
- Ľubomír Mlích我使用了
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
的缩写形式。建议参考 https://curl.haxx.se/docs/manpage.html 并在其中使用 Ctrl+F 查找这些选项以查看详情。 - Ľubomír Mlíchcurl --http2 --head domain.com
被接受的答案在我所看的示例中对于h2c无效。请改用以下命令:
curl --http2 -sI https://curl.se -o/dev/null -w '%{http_version}\n'
curl -ksI ...
)运行。 - David