从7.47.0开始,curl工具默认为httpS连接启用http / 2.
使用自制软件安装最新版本并检查:
curl --versioncurl 7.54.1 (x86_64-apple-darwin15.6.0) libcurl/7.54.1 SecureTransport zlib/1.2.5
但在启用http2的URL上运行curl(例如使用https://tools.keycdn.com/http2-test测试)我得到:
curl -I http://www.Google.co.uk http/1.1 200 OK
和
curl --http2 -v http://www.Google.co.ukcurl: (1) Unsupported protocol
知道为什么它使用http / 1.1而不是http / 2?
解决方法 您可以构建curl以使用许多不同的TLS / SSL库中的一个,每个库都具有稍微不同的功能集,并为curl提供稍微不同的条件.您在问题中显示的卷曲将SecureTransport列为其构建使用的TLS库,即macOS本机TLS库.
安全传输根本不提供卷曲通过TLS协商http / 2的必要手段 – 或者至少它没有,因为我被告知最新版本现在支持ALPN所以未来的卷曲版本应该能够即使使用安全传输,也可通过TLS执行http / 2.
除了正确的TLS协商之外,curl还需要说http / 2,感谢使用古老的nghttp2库,这是第二个依赖,需要curl才能说http / 2.存在nghttp2时,即使TLS库无法正确协商ALPN,curl实际上也可以通过纯文本http说http / 2.
固定?
如果您选择使用其他TLS库(例如OpenSSL,GnuTLS或NSS)重新构建curl,那么它今天就可以通过httpS说http / 2了.
总结以上是内存溢出为你收集整理的为什么curl在mac上使用HTTP / 1.1而不是HTTP / 2?全部内容,希望文章能够帮你解决为什么curl在mac上使用HTTP / 1.1而不是HTTP / 2?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)