Использование переменной заголовка Auth Digest в запросе PHP curl

Я работаю с API, который предоставляет мне токен для подключения. Это дает эти инструкции.

Этот токен затем отправляется во всех последующих вызовах на сервер в переменной заголовка Auth Digest.

Я не уверен, что это значит. Я попробовал несколько подходов и прочитал несколько вопросов о переполнении стека. Вот что я попробовал. См комментарии кода включены для деталей.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);

// I have tried setting both of these
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

// In combination of the above separately, I have tried each of these individually
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $token);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Auth Digest: ' . $token));

curl_setopt($ch, CURLOPT_POST, true);
$post_data = array('Auth Digest' => $token);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));

curl_setopt($ch, CURLOPT_USERPWD, $token);

// Then I execute and close, either giving me a failed response and a response that says token is not valid
$response = curl_exec($ch);
$header_sent = curl_getinfo($ch, CURLINFO_HEADER_OUT);
if (!$response) {
echo $action . ' curl request failed';
return false;
}
curl_close($ch);
$response_json = json_decode($response);
var_dump($response_json);

Вот несколько связанных вопросов, связанных со стековым потоком, которые я безуспешно пытался применить к своей проблеме.

Завершение запроса с дайджест-аутентификацией в PHP для скачивания частного хранилища Bitbucket

Клиентская часть дайджест-аутентификации с использованием PHP POST to Web Service

Как мне сделать запрос, используя базовую аутентификацию HTTP с PHP curl?

Мне нужно знать, какой необработанный http-заголовок они ожидают, или как я могу использовать php curl для генерации заголовка, который они, вероятно, ожидают.

0

Решение

Заголовок авторизации дайджеста обычно выглядит так:

Authorization: Digest _data_here_

Так что в вашем случае попробуйте:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//... existing options here
$headers = array(
'Authorization: Digest ' . $token,
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);

Если вы используете CURLOPT_HTTPHEADER, это просто указывает дополнительные заголовки для отправки и не требует добавления всех заголовков туда.

Если все отправляемые вами заголовки имеют явные параметры, используйте их и просто передайте один заголовок авторизации CURLOPT_HTTPHEADER,

1

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

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

По вопросам рекламы [email protected]