代理及其目标站点如何协商HTTP/2
curl的--proxy-http2控制到HTTPS代理的连接。隧道内的目标站点会独立协商自己的HTTP版本。
网站可以通过HTTP/1.1 CONNECT隧道用HTTP/2响应。它的TLS会话独立于客户端到代理的连接,协商目标站点的协议。反过来也一样:连接HTTPS代理时使用HTTP/2,并不会强制网站使用HTTP/2。
为了有针对性地测试外层连接,curl 8.1.0加入了--proxy-http2:
curl --proxy https://proxy.example:8443 --proxy-http2 --connect-timeout 5 --max-time 15 --verbose https://example.com/使用真正的HTTPS代理,以及支持HTTP/2的curl构建。检查curl --version,再阅读详细协商过程:代理可能只提供HTTP/1,curl就会采用HTTP/1。这个选项不会在普通HTTP或SOCKS监听端点上启用HTTP/2。
将代理协商结果与最终传输的HTTP版本分开记录。响应版本或最终传输的write-out值,不会自动说明外层代理连接的版本。
对于公共HTTP代理列表中的端点,先使用其支持的传输方式,发送一次完整请求。只有确实使用HTTPS代理,并想测试外层能力时,才添加这个选项,而不是因为网站支持HTTP/2。即便两个代理都能访问同一个HTTP/2网站,它们的路由、负载和连接建立时间也可能不同;仅凭网站版本无法解释性能。