【发布时间】:2013-10-01 17:14:41
【问题描述】:
在别人的代码中,我遇到了 cURL 的这个选项设置:
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
PHP 文档说默认情况下此选项设置为 CURL_HTTP_VERSION_NONE,这让 cURL 决定使用哪个 HTTP 版本。否则,您可以强制使用 HTTP 1.0 或 HTTP 1.1。总有一天会出现强制使用 HTTP 2.0 的选项(请参阅 cURL 邮件列表中的此线程:http://curl.haxx.se/mail/lib-2013-09/0020.html)
我仍在尝试从问题 HTTP 1.0 vs 1.1 中了解 HTTP 1.0 与 1.1 之间的区别,现在我想知道 HTTP 2.0 的未来需要什么样的考虑因素。
我的问题是:
如果我不能始终确定服务器支持什么 HTTP 版本,在应用程序中设置 CURLOPT_HTTP_VERSION 是个好主意吗?或者我应该使用 $_SERVER['SERVER_PROTOCOL'] 检测版本并基于此更改 CURLOPT_HTTP_VERSION 吗?
如果我知道服务器能够支持 HTTP 1.1(或将来的 HTTP 2.0),是否有理由认为 cURL 无法解决这个问题?
是否存在使用 HTTP 1.0 比使用 HTTP 1.1 更好的情况?
【问题讨论】:
-
cURL 很聪明,让它自己弄清楚。基本上它会使用最新的版本,如果不支持则回退到以前的版本。 HTTP 1.0 和 1.1 之间的差异是相当深奥的,并且在 PHP 应用程序的上下文中很少出现问题,因为 apache/nginx/iis/etc 在请求到达 PHP 之前处理了几乎所有事情。