Запрос PHP CURL GET: Вы не авторизованы для доступа к этому ресурсу - PullRequest
0 голосов
/ 25 марта 2019

Я сталкиваюсь с различными проблемами.Я могу получить ответ в POSTman, но получаю сообщение об ошибке при использовании кода PHP.

У вас нет прав для доступа к этому ресурсу

, как показано ниже:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: application/xml','Accept: application/xml')); 
$data = curl_exec($ch);
curl_close($ch);

Ответы [ 2 ]

0 голосов
/ 25 марта 2019
<?php

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . base64_encode($password)); //here is the change
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: application/xml','Accept: application/xml'));
$data = curl_exec($ch);
curl_close($ch);

Это очень длинный пример, и я знаю, что я видел немало API, которые работают подобным образом, и, поскольку у ОП, похоже, нет документации по API, я опубликую это как ответ на случай, еслипомогает ему решить его проблему.

Если вышеупомянутое не работает, попытайтесь также base64_encode($username)

0 голосов
/ 25 марта 2019

К сожалению, разные версии cURL ведут себя немного по-разному, и поэтому существует не один правильный ответ, а несколько подходов, которые работают для разных версий cURL.

Вот два предложения:

С Проблемы с именем пользователя или с двоеточием при установке CURLOPT_USERPWD

Попробуйте добавить curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); или вместо CURLAUTH_BASIC.

То, что всегда должно работать:

Если это не поможет, добавьте имя пользователя и пароль непосредственно в URL, например https://user:pass@host.com/path.

Вы не должны отключать проверку сертификатов, вместо этого получите действительный сертификат, они бесплатны с использованием letsencrypt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...