PHP get_headers 函数总是 HTTP/1.1
PHP get_headers function always HTTP/1.1
PHP get_headers
函数 returns 一个数组,最终包括像 HTTP/1.1 200 OK
这样的字符串。我传递给函数的 URL 是 https
。由于某种原因,get_headers
的成功响应总是 HTTP/1.1
,但 Firefox devtools - 网络选项卡显示它是 HTTP/2
。
我这样调用函数
$headers = get_headers("https://SOME_URL", 1);
。
第二个参数只影响响应数组的格式。
然后像if($headers[0] == 'HTTP/1.1 200 OK') { ... }
那样处理
很遗憾,我无法为我的问题提供更好的代码段。 get_headers
是否在幕后做了一些事情以始终将响应显示为 HTTP/1.1
?其他人 运行 参与其中了吗?
我搜索了各种帖子并阅读了一些文档,但找不到与我的问题相关的任何内容。
感谢任何帮助!
如果不代理流量,我想 get_headers 只是不支持 HTTP/2(我想所有本机 PHP 函数都不支持 HTTP/2,可能取决于在您使用的 PHP 版本上)。
也许可以尝试使用其他 HTTP 客户端(例如 Guzzle)并强制使用这样的 HTTP 版本:
use GuzzleHttp\Client;
$client = new Client();
$client->get('http://test.test', [
'version' => 2.0,
'debug' => true,
]);
如果服务器仍然return HTTP 版本 1.1 的响应,那么您的流量可能已被代理。如果不是,get_headers可能不支持HTTP/2。
编辑:根据这个 post 并不太老,PHP 仅原生支持 HTTP/2 和 cURL。
PHP get_headers
函数 returns 一个数组,最终包括像 HTTP/1.1 200 OK
这样的字符串。我传递给函数的 URL 是 https
。由于某种原因,get_headers
的成功响应总是 HTTP/1.1
,但 Firefox devtools - 网络选项卡显示它是 HTTP/2
。
我这样调用函数
$headers = get_headers("https://SOME_URL", 1);
。
第二个参数只影响响应数组的格式。
然后像if($headers[0] == 'HTTP/1.1 200 OK') { ... }
很遗憾,我无法为我的问题提供更好的代码段。 get_headers
是否在幕后做了一些事情以始终将响应显示为 HTTP/1.1
?其他人 运行 参与其中了吗?
我搜索了各种帖子并阅读了一些文档,但找不到与我的问题相关的任何内容。
感谢任何帮助!
如果不代理流量,我想 get_headers 只是不支持 HTTP/2(我想所有本机 PHP 函数都不支持 HTTP/2,可能取决于在您使用的 PHP 版本上)。
也许可以尝试使用其他 HTTP 客户端(例如 Guzzle)并强制使用这样的 HTTP 版本:
use GuzzleHttp\Client;
$client = new Client();
$client->get('http://test.test', [
'version' => 2.0,
'debug' => true,
]);
如果服务器仍然return HTTP 版本 1.1 的响应,那么您的流量可能已被代理。如果不是,get_headers可能不支持HTTP/2。
编辑:根据这个 post