【问题标题】:Selective 302 redirect选择性 302 重定向
【发布时间】:2018-11-30 19:07:56
【问题描述】:

我正在从一个域 (mac2cash.com) 上的 php 脚本到另一个域 (thebookyard.com) 进行 cURL 调用,它们都托管在同一个 Apache 服务器和同一个 IP 地址上。这一直工作正常,但我需要向站点添加一些新功能,并且我刚刚在与正在工作的 cURL 调用相同的目标域的根级别创建了一个新的 php 脚本,但是当我调用这个新脚本时使用我在工作脚本上使用的相同代码,这将返回消息“找到:文档已移至此处”。

有效和失败的 cURL 调用的目标脚本位于同一域的根级别。我已经检查过它们具有相同的 unix 权限。但是,如果我只是将工作脚本中的 php 文件名更改为失败调用中的目标脚本的名称,那么现在这也会失败,并显示相同的 302 重定向消息。 我什至将目标域上的“工作”目标脚本(byasd_api.php)复制到一个新文件(byasd_api_copy.php),如果我从正在工作的调用脚本对它进行cURL调用,我会收到302消息,即使代码完全一样! 我看不出这两个文件之间有什么区别。是否存在某种缓存,而新创建的文件没有被同等对待?

供参考,这里是调用代码:

    $header=array("Host:thebookyard.com"); 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, HTTP_SERVER_IP."/byasd_api.php");
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.mac2cash.com');
    curl_setopt($ch, CURLOPT_POST,3);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);            
    $output = curl_exec($ch);
    curl_close($ch);

“byasd_api.php”脚本名称是我唯一要更改的内容。

我花了几个小时在谷歌上搜索解决方案,所以如果有任何建议,我将不胜感激。

【问题讨论】:

    标签: php curl http-status-code-302


    【解决方案1】:

    您的 apache 已配置为在每次调用中搜索 favicon.ico 302 是因为找不到 ico

    GET http://theboo....com/favicon.ico [HTTP/1.1 302 找到 151 毫秒]

    更改配置或添加 favicon.ico 文件。

    也许配置尝试只在根目录中查找ico文件

    【讨论】:

    • 感谢您的回复。你在哪里看到这个?我在 Safari 控制台中没有收到此类消息。另外,这是否可以解释为什么一个脚本有效而同一站点上同一位置的另一个脚本无效?
    【解决方案2】:

    事实证明,行为差异的原因是工作脚本名称作为重写条件包含在将 http 重定向到 https 的 htaccess 文件中。将 CURL url 更改为“https://”.HTTP_SERVER_IP.“/byasd_api.php”停止了“找到:文档已移至此处”错误,但随后调用失败,因为 CURL 试图验证 IP 的 SSL 证书地址而不是域。 解决方案是添加以下内容: curl_setopt($ch, CURLOPT_RESOLVE, array("www.thebookyard.com:443:".HTTP_SERVER_IP,)); 这仍然允许调用 IP 地址(这比通过域名快得多),但 CURL 会根据域名验证 SSL 证书。

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2014-11-10
      • 2015-11-30
      • 2020-08-28
      • 2019-04-12
      • 1970-01-01
      相关资源
      最近更新 更多