热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么curl在mac上使用HTTP/1.1而不是HTTP/2?

如何解决《为什么curl在mac上使用HTTP/1.1而不是HTTP/2?》经验,为你挑选了1个好方法。

根据这个https://curl.haxx.se/docs/http2.html

Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.

使用自制软件安装最新版本并检查:

curl --version
curl 7.54.1 (x86_64-apple-darwin15.6.0) libcurl/7.54.1 SecureTransport zlib/1.2.5

curl在启用HTTP2的URL上运行(例如使用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.uk
curl: (1) Unsupported protocol

知道为什么它使用HTTP/1.1而不是HTTP/2?



1> Daniel Stenb..:

您可以构建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了.


与此同时,苹果公司已经改变并且现在已经开始使用libressl进行卷曲...
推荐阅读
author-avatar
译林hy_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有