После перенаправления в cURL без включения заголовков - PullRequest
1 голос
/ 04 февраля 2020

У меня есть следующая команда cURL:

curl -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/octet-stream" \
    $TARBALL_ASSET_URL -O $filename

$TARBALL_ASSET_URL - это URL-адрес актива, присоединенного к выпуску GitHub. Когда я достигаю этой конечной точки, происходит то, что GitHub отвечает перенаправлением 302 на предварительно подписанный URL-адрес загрузки Amazon S3. Однако, когда он попадает на этот URL, cURL включает оригинальный заголовок Authorization, который я использовал для аутентификации с помощью API GitHub. Сервер S3 затем видит заголовок Authorization и отклоняет запрос, поскольку UR уже имеет подпись, а AWS отклоняет любые запросы, которые включают в себя несколько попыток аутентификации.

Есть ли поддержка в curl для гарантировать, что указанные заголовки используются только в первом запросе в цепочке перенаправления? Или я просто не должен следовать за перенаправлениями и делать это вручную как команды curl?

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Этот вопрос не совсем дубликат этого поставленного вопроса, но он дублирует мой конкретный c вариант использования. Оказывается, я использовал cURL v7.54, а с v7.58 заголовок Authorization определенно никогда не передается при перенаправлении по соображениям безопасности.

0 голосов
/ 04 февраля 2020

Вы можете добавить -L (следовать перенаправлению) к вашей команде. Так будет:

curl -L -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/octet-stream" \
    $TARBALL_ASSET_URL -O $filename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...