libcurl CURLOPT_HTTP_VERSION参数说明及HTTP/2非TLS连接相关问题
libcurl CURLOPT_HTTP_VERSION 选项说明
libcurl 提供 CURLOPT_HTTP_VERSION 选项,支持以下参数:
CURL_HTTP_VERSION_2TLS:
仅尝试在TLS(HTTPS)连接上使用HTTP 2协议。
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE:
使用HTTP/2发起非TLS的HTTP请求。
问题解答
HTTP 2是否会在TLS连接上自动启用?
不会。libcurl默认不会自动在TLS连接上启用HTTP/2,默认优先使用HTTP/1.1协议。如果需要在TLS连接上尝试使用HTTP/2,需要手动将CURLOPT_HTTP_VERSION参数设置为CURL_HTTP_VERSION_2TLS,此时libcurl会在TLS握手阶段协商HTTP/2版本,协商成功则使用HTTP/2,协商失败会自动回退到HTTP/1.1。
HTTP 2是否支持在未加密的公开连接上运行?
HTTP/2协议标准本身支持在未加密的明文TCP连接上运行(该模式也称为h2c),但目前绝大多数主流浏览器都不支持h2c模式,仅支持基于TLS加密的HTTP/2。
如果使用libcurl作为客户端,且明确知晓目标服务端支持明文HTTP/2,可以通过设置CURLOPT_HTTP_VERSION参数为CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE,直接向未加密的HTTP连接发起HTTP/2请求。
内容的提问来源于stack exchange,提问作者Optimus1
相关产品推荐
相关产品推荐

