如何让 php curl 忽略 http2 错误?

问题描述 投票:0回答:0

我正在使用 php curl 检查用户提供的 URL 是否有效。有关具体/详细信息,请参阅这个问题。这个问题得到了我接受的答案——错误检查太复杂了,我应该只使用 file_get_contents() 而不是 curl。它的唯一目的是确定好/坏,但它不会向用户提供有用的信息,比如域是否不存在、找不到资源、需要授权等。所以我打算发布一个不同的基于卷曲的答案,并从建议 file_get_contents() 的答案中删除接受状态。

但后来我遇到了我拥有的网站的 URL 的以下问题:curl 拒绝了它,详细日志中记录了以下错误:

* http2 error: Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]

追踪下来,它显然是被触发的,因为 http2 RFC 禁止在响应中使用特定于连接的标头。我可以通过将

proxy_hide_header: Upgrade;
添加到站点的 nginx 配置来“修复”它。但是该网站在网络浏览器中运行良好,我想做的是确定一个 URL 是否可以在网络浏览器中运行。

我想我可以编写更多的代码来保存来自 curl 请求的详细消息并扫描它们以查找 http2 错误,但这似乎非常复杂。我可以在 curl 端做些什么来防止 URL 因这个原因被拒绝?

php http2 php-curl
© www.soinside.com 2019 - 2024. All rights reserved.