Почему 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-аутентификации: