Селективный редирект 302 - PullRequest
0 голосов
/ 30 ноября 2018

Я делаю вызовы cURL из сценариев php в одном домене (mac2cash.com) в другой (thebookyard.com), оба размещаются на одном сервере Apache и с одним и тем же IP-адресом.Это работает нормально, но мне нужно добавить некоторые новые функции на сайт, и я только что создал новый скрипт php на корневом уровне того же целевого домена, что и работающий вызов cURL, но когда я вызываю этот новый скрипт, используятот же код, который я использовал в рабочем скрипте, он возвращает сообщение «Найдено: документ перемещен сюда».

Целевые сценарии для рабочих и сбойных вызовов cURL находятся на корневом уровне одного и того же домена.Я проверил, они имеют одинаковые разрешения UnixНо если я просто изменю имя php-файла в рабочем скрипте на имя целевого скрипта при неудачном вызове, то теперь это тоже не удастся с тем же сообщением перенаправления 302.Я даже продублировал «рабочий» целевой скрипт (byasd_api.php) на целевом домене в новый файл (byasd_api_copy.php), и я получаю сообщение 302, если я выполняю вызов cURL из вызывающего скрипта, который работал, хотякод точно такой же!Я не вижу, в чем разница между этими двумя файлами.Существует ли какое-то кэширование, когда вновь созданные файлы не обрабатываются одинаково?

Для справки приведем код вызова:

    $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 голосов
/ 05 декабря 2018

Оказывается, причина различий в поведении заключалась в том, что имя рабочего сценария было включено в качестве условия перезаписи в файл htaccess, который перенаправлял http на https.Изменение URL-адреса CURL на «https://".HTTP_SERVER_IP."/byasd_api.php" остановило ошибку« Найдено: документ перемещен сюда », но затем произошел сбой вызова, поскольку CURL пытался проверить сертификат SSL для IP-адреса, а не домена. Решением этой проблемы былодобавить следующее: curl_setopt ($ ch, CURLOPT_RESOLVE, array ("www.thebookyard.com:443:". HTTP_SERVER_IP,)); Это все еще позволяет вызову быть на IP-адрес (который намного быстрее, чем через доменимя), но CURL проверяет сертификат SSL по доменному имени.

0 голосов
/ 30 ноября 2018

Ваш apache настроен на поиск favicon.ico в каждом вызове, потому что 302 не находит ico

GET http://theboo. ... com / favicon.ico [HTTP /1.1 302 Найдено 151 мс]

Измените конфигурацию или добавьте файл favicon.ico.

Возможно, конфигурация попытается найти файл ico только в корне

enter image description here

...