gpt4 book ai didi

PHP Curl - 在不允许时收到 HTTP/0.9

转载 作者:行者123 更新时间:2023-12-03 20:12:51 25 4
gpt4 key购买 nike

当我尝试向苹果推送服务发送 HTTP/2.0 后请求时,我偶然发现了一个奇怪的行为:

        $http2ch = curl_init();
curl_setopt($http2ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($http2ch, CURLOPT_URL, 'https://api.push.apple.com/3/device/megauniquedevicetokendummy');
curl_setopt($http2ch, CURLOPT_PORT, 443);
curl_setopt($http2ch, CURLOPT_HTTPHEADER, $httpHeader);
curl_setopt($http2ch, CURLOPT_POST, true);
curl_setopt($http2ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($http2ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($http2ch, CURLOPT_TIMEOUT, 30);
curl_setopt($http2ch, CURLOPT_HEADER, 1);

$result = curl_exec($http2ch);
if ($result === false) {
throw new \Exception("Curl failed: " . curl_error($http2ch) . " | " . curl_getinfo($http2ch, CURLINFO_HTTP_CODE));
}

异常与消息一起引发:
curl 失败: 在不允许时收到 HTTP/0.9 | 0

我在上面截取的代码的第二行明确告诉 curl 使用 HTTP/2.0。
有谁知道该错误消息的含义以及为什么 curl 使用如此旧的 HTTP 版本?

我使用的是 PHP 7.2 和 curl 版本 7.66.0。

最佳答案

当服务器是 grpc 服务器时,也会发生这种情况。当 curl 针对 grpc 服务器或其他非 HTTP 服务器运行时,它们没有响应 curl 期望的有效 HTTP 状态行,curl 将打印“不允许时收到 HTTP/0.9”。
如果 curl 打印诸如“未知协议(protocol)”之类的内容而不是假设它是 0.9 可能会更好,因为如今访问诸如 grpc 服务器之类的东西将比实际的 HTTP 0.9 服务器更常见。

关于PHP Curl - 在不允许时收到 HTTP/0.9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59048926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com