curl возвращает ошибку 301 после перехода на https - PullRequest
0 голосов
/ 07 мая 2018

Мы недавно перешли на SSL, и сайт отлично работает, за исключением одной функции. Функция использует curl в приведенном ниже коде для выполнения API, расположенного на том же сервере. Переменная url для этой функции: news.hubsdev.com/administrator/index.php?option=com_api&task=acymailing.listcreate Переменная $ ch: - ресурс ID = '384' тип = 'curl'

        $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
    curl_setopt($ch, CURLOPT_POST, count($data));
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

Ответ

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://news.hubsdev.com/administrator/index.php?option=com_api&amp;task=acymailing.listcreate">here</a>.</p>
</body></html>

Мы используем версию PHP 5.6, размещенную на AWS. Я проверил сертификат ssl, и он прошел с "A".

Как я могу определить, почему я получаю эту ошибку?

Спасибо! Ken

1 Ответ

0 голосов
/ 07 мая 2018

Необходимо выполнить перенаправление, используя опцию CURLOPT_FOLLOWLOCATION:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

Из документации :

ИСТИНА, чтобы следовать за любым заголовком "Location:", который сервер отправляет как часть заголовка HTTP (обратите внимание, что это рекурсивно, PHP будет следовать столько же Заголовки "Location:", которые отправляются, если только CURLOPT_MAXREDIRS не является установлен).

Или вы можете просто использовать https:// в своем коде, чтобы избежать перенаправления.

...