【问题标题】:How can PHP detect whether remote server is requesting authenticationPHP如何检测远程服务器是否正在请求身份验证
【发布时间】:2017-01-05 23:48:34
【问题描述】:

我正在尝试编写一个循环遍历一组 URL 的脚本。每个 URL 都直接指向一个 jpeg 文件。图像不在同一台服务器上。我找到了this question,但我无法使用 CURL 库(在我的服务器上未激活),当我使用 @getimagesize 时,我发现我的函数对所有图像都返回 false;但是,我发现原因如下:如果我在 Web 浏览器中输入有效的 URL,系统会提示我对远程服务器进行身份验证。如果我对远程服务器输入无效的 URL,那么我会收到 404。

所以我的问题变成了——给定一个远程 URL,PHP 可以检测到远程服务器是否正在提示登录吗?如果是这样,那肯定比解析有效和经过身份验证的 URL 调用的结果要快。如果没有,那么我怎样才能让 PHP 脚本验证自己以检查远程图像?

【问题讨论】:

  • 请参阅stackoverflow.com/questions/22002980/…,了解如何使用file_get_contents 发送身份验证标头。但我认为没有办法找出这就是失败的原因。
  • 谢谢。我运行了解释查询 $http_response_header 并链接到手册的答案。

标签: php


【解决方案1】:

带有file_get_contents() 的HTTP 调用将自动创建变量$http_response_header,它是一个包含HTTP 响应标头的数组。从那里您可以检测是否有错误。

See the manual了解详情。

【讨论】:

    【解决方案2】:

    根据身份验证的类型,如果您在远程 url 上使用 get_headers(),它将返回“WWW-Authenticate”并且应该返回“401 Unauthorized”。

    真的,你应该使用 curl 移动到服务器,因为它可以发送正确的凭据

    【讨论】:

    • 感谢您的回答 - 我尚未测试但已经接受了其他答案。我们即将关闭此服务器 - 只是在它关闭之前的最后一分钟任务。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2018-05-01
    • 1970-01-01
    相关资源
    最近更新 更多