Вызов API cURL возвращает 404 (если проверка SSL отключена), но вызов JS API работает правильно

Я пытаюсь настроить форму, которая после отправки отправит данные через вызов API для сохранения на стороннем портале. Портал настроен как поддомен основного сайта, но размещен на другом сервере.

При тестировании вызовов API в Postman они будут работать только в том случае, если я подключен через прокси-сервер и отключил проверку SSL-сертификата в настройках. На сайте я получаю сообщение об ошибке cURL: «Проблема с сертификатом SSL: невозможно получить сертификат локального эмитента». Администратор сервера, управляющий основным сайтом, попытался разрешить эту покупку, следуя инструкциям здесь https://curl.haxx.se/docs/sslcerts.html, но не смогли найти решение еще.

В то время как они выясняют проблему с сертификатом, я хотел, чтобы вызовы API как минимум работали, и, поскольку любая отправка должна все еще проверяться персоналом клиента вручную, я думал, что быстрым решением будет отключить проверку SSL в cURL. звонок (явно не идеальный), как временное решение для клиента.

Я использую вызов cURL:

$url = "https://subdomain.primarydomain.com:444/api/v2/login?username=username&password=12345";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");


$result = curl_exec($ch);
if ($result === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo 'Operation completed without any errors';
}
curl_close($ch);

Это возвращает ответ 404 not found, когда команда cURL выполнена. Этот результат происходит, если код запускается на главном доменном сервере, или если я запускаю его локально (WAMP), даже когда он подключен через VPN.

Однако следующий код JS работает нормально и возвращает ожидаемые результаты:

async function getTkn()
{
var tkn = "";

try {
var postResult = await $.post("https://subdomain.primarydomain.com:444/api/v2/login", {username: "username", password: "12345"}, function(data){
console.log("success in post");
console.log(data);
tkn = data.token;
})
.done(function(data) {
console.log("post is done");
console.log(data);

if(data.token != "")
{
console.log("log in successful");
console.log("token-success: " + data.token);
// Save Registration Data
//  await saveClientRegistration(tkn, fieldValues);
}
else
{
console.log("log in fail");
console.log("token-fail: " + data);
}
})
.fail(function(data) {
console.log("authentication failed");
})
.always(function(data) {
console.log("always finished");
}).then();

} catch(e) {
console.log(e);
}

return tkn;
}

Поскольку нам нужно отправить имя пользователя / пароль в виде обычного текста, я не хочу хранить их в легко доступном файле JS, поэтому я бы хотел, чтобы PHP cURL работал.

Буду очень признателен за любые предложения по решению проблем cURL, так как последние 6 часов я пробовал разные вещи из Google.

ОБНОВЛЕНИЕ: я попытался использовать параметры прокси в cURL как следующие безуспешно. Я получаю сообщение об ошибке: «Ошибка Recv: Сброс соединения по пиру»

$proxy = 'maindomain_IP:444';
$proxyauth = 'proxy_user:proxy_pass';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
//curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($ch, CURLOPT_PORT, 444);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT , 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//curl_setopt ($ch, CURLOPT_VERBOSE, TRUE);
if (curl_exec($ch) === false) {
echo 'Curl error: ' . curl_error($ch);
} else {
echo 'Operation completed without any errors';
}
$content = curl_exec($ch);
curl_close($ch);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector