【问题标题】:PHP get_headers and curl both give empty resultPHP get_headers 和 curl 都给出空结果
【发布时间】:2021-02-06 22:43:03
【问题描述】:

我知道有一些类似的话题,但不一样。我有一个工作代码,用很多不同的 url 进行了测试——http 和 https 也是如此——没有任何问题。然后,我找到了一个网站……当我询问 URL 标头时,我得到了空数组答案。

get_headers("https://www.diversalertnetwork.org/diving-incidents/Divers-air-consumption-appeared-unbelievably-good", 1);

结果是一个空数组。

Array
(
)

我也尝试使用 CURL,但结果相同。我尝试下载 url 的内容,但没有。你可以试试看。惊喜!如果我从 https:// 修改为 http://,它将开始工作。当然,https 链接在浏览器中运行良好。此外,get_headers 与其他 https:// 链接一起使用。 使用 curl 我使用我自己的浏览器的用户代理,所以如果服务器出于任何安全原因尝试检测,这是真实的。我真的不知道我能做什么,最重要的是,发生了什么,为什么没有任何答案,没有错误或其他什么。

php 5.6

【问题讨论】:

  • 浏览器关于该站点的 HTTPS 连接的警告:“到此站点的连接使用过时的协议 (TLS 1.0)、过时的密钥交换 (RSA) 和过时的密码 (3DES_EDE_CBC with HMAC -SHA1)。” 因此,可能只是在您的系统上与仅支持过时安全协议的站点建立 HTTPS 连接被禁用。您的 PHP 错误报告设置是否正确以显示警告?
  • 是的。 ini_set("display_errors", 1); ini_set("error_reporting", E_ALL ^ E_NOTICE);无论如何,我的 chrome 在链接之前向我显示 (i) 并且没有绿色,但是如果我阅读了信息,则会显示:有效证书与此站点的连接正在使用有效的、受信任的服务器证书。
  • 是的,但是如果您检查详细信息,您应该会看到我引用的相同警告消息。对我来说,上面的代码行工作正常,并返回标题。
  • 任何建议,我可以在我的电脑上做什么?我正在使用具有关闭默认设置的 xampp。但你说得对,我将代码上传到我的服务器,然后从那里得到结果。嗯,但我在 PC 上的本地网络服务器上从来没有遇到过同样的问题。什么样的过时安全协议,你知道吗?或者我如何检查本地服务器上的内容?
  • 引用的消息提到的那些......在这里查看如何更改设置,superuser.com/a/882651(您可能需要根据浏览器将值调整为站点使用的特定密码套件消息。)

标签: php curl get-headers


【解决方案1】:

我的浏览器显示有关该站点 HTTPS 连接的警告:

与此站点的连接使用过时的协议 (TLS 1.0)、过时的密钥交换 (RSA) 和过时的密码(带有 HMAC-SHA1 的 3DES_EDE_CBC)。

因此,可能只是在您的系统上与仅支持过时安全协议的站点建立 HTTPS 连接被禁用。


与 SSL 相关的 Apache 配置设置可在此处找到:https://superuser.com/a/882651

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多