选择性302重新导向

时间:2018-11-30 19:07:56

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

我正在从一个域(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'脚本名称。

我花了几个小时来寻找解决方案,希望能提出任何建议。

2 个答案:

答案 0 :(得分:0)

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

获取http://theboo....com/favicon.ico [HTTP / 1.1 302找到151ms]

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

也许配置尝试仅在根目录中找到ico文件

enter image description here

答案 1 :(得分:0)

事实证明,行为不同的原因是工作脚本名称作为重写条件包含在htaccess文件中,该文件将http重定向到https。将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证书。