Почему wget не использует userName и пароль в URL впервые

Ниже приведена команда и ответ wget, он первый раз не использует предоставленные имя пользователя и пароль и получает 401, позже он использует аутентификацию и получает 200.

Это хорошо работает с curl, но через Postman тоже самое происходит, что это за феномен и почему это происходит?

$> wget 'http://userName:password@host:port/v1/api'
--2018-08-31 16:06:01--  http://userName:password@host:port
Connecting to host:port... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Basic realm="myApp", API-Key realm="myApp"
Reusing existing connection to host:port.
HTTP request sent, awaiting response... 200 OK
Length: 146 [application/json]
Saving to: 'api'

api 100%[==================================================================================================================>]     146  --.-KB/s   in 0s

2018-08-31 16:06:01 (9.28 MB/s) - 'api' saved [146/146]

1 ответ

Решение

wget и большинство других программ запрашивают базовую проверку подлинности со стороны сервера перед отправкой учетных данных.

Это wget поведение по умолчанию с версии 1.10.2.
Вы можете изменить это поведение, используя --auth-no-challenge опция:

Если эта опция задана, Wget отправит базовую HTTP-аутентификационную информацию (имя пользователя и пароль в незашифрованном виде) для всех запросов, как Wget 1.10.2 и более ранние версии, сделанные по умолчанию.

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


Это общий рабочий процесс по умолчанию для HTTP-аутентификации:

Узнайте больше о HTTP-аутентификации.

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