401 Не авторизован при аутентификации с использованием реферера - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь использовать API, который говорит использовать его в пользовательском приложении, чтобы установить пользовательский реферер. Вот официальный текст:

API требует (если он включен) токен для операций чтения, которые будут отправлены для разрешения запроса, в противном случае будет возвращено сообщение «Отсутствует параметр ключа».

Модуль безопасности будет использовать заголовок реферера ("referer" в Java, HTTP_REFERER в PHP) запроса для идентификации и фильтрации авторизованных доменов.

В настоящее время я могу войти в систему к веб-интерфейсу с помощью специального URL-адреса, который, как представляется, устанавливает сеанс, а затем перенаправляет на основной URL-адрес. Если я пытаюсь перейти к основному URL-адресу напрямую, не используя сначала специальный URL-адрес, я получаю ошибку 401, как и ожидалось (впоследствии я могу просто использовать основной URL-адрес)

Ключ, приведенный ниже над текстом, является чем-то например: http://example.com/api/?key=secretkeyhere

Хотя я могу использовать API с помощью инструмента GUI в своем веб-браузере, как описано выше, я не могу понять, как подключиться к нему программно. Я попытался использовать как curl в Linux, так и curl в PHP. Оба не удалось.

Завиток от терминала:

curl --header http://example.com/api/?key=secretkeyhere http://example.com/api/search?query=terms*

Завиток в PHP:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/api/search?query=terms');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://example.com/api/?key=secretkeyhere');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
$html = curl_exec($ch);
curl_close($ch);
echo "$html";
?>

Я продолжаю получать:

Несанкционированный. Этот сервер не может подтвердить, что вы авторизованы для доступа к запрошенному документу. Либо вы ввели неверные учетные данные (например, неверный пароль), либо ваш браузер не понимает, как предоставить необходимые учетные данные.

Я что-то здесь не так делаю? Правильно ли настроен API? Я прочитал страницу man для cURL, и мне кажется, что это именно то, что я должен делать.

...