Что на самом деле делает флаг -u на cURL?

Я смотрю на пример cURL в Stripe для получения информации о событии.

Они заставили меня сделать:

curl https://api.stripe.com/v1/events/evt_123 \
   -u sk_test_somekey:

Документация для cURL гласит, что -u делает USER:PASSWORD.

Когда я попытался отправить это как -d или как запрос?, API Stripe сообщает, что мне не хватает заголовка. Это не кажется правильным.

Я также не понимаю отсутствие пароля после имени пользователя. Если я отправлю этот CURL без ":", мне будет предложено ввести пароль. Нажав Enter (без ввода символов), я получаю ожидаемый ответ.

Итак, что именно -u делает, чтобы я мог имитировать этот вызов в своем коде?

1 ответ

Решение

curl -u кодирует username:password строка в строку base-64, которая передается в Authorization заголовок, вот так:

GET / HTTP/1.1
Host: example.com
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

Это не легко снять, но это и не шифрование. Любой пользователь с декодером base 64 может видеть имя пользователя и пароль, поэтому убедитесь, что вы настроили HTTPS.

Ваша HTTP-библиотека, вероятно, имеет функцию, которая делает это за вас.

Другие вопросы по тегам