web-dev-qa-db-ja.com

wgetが初めてURLでuserNameとパスワードを使用しない理由

以下はwgetのコマンドと応答です。最初に提供されたuserNameとpasswordを使用せずに401を取得し、後でauthを使用して200を取得します。

これはcurlでうまく機能しますが、Postmanでも同じことが起こります。この現象は何で、なぜ起こるのですか?

$> wget 'http://userName:[email protected]:port/v1/api'
--2018-08-31 16:06:01--  http://userName:[email protected]: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]
2
Saurabh

wgetおよび他のほとんどのプログラムは、資格情報を送信する前に、サーバー側にbasic authentication challengeを要求します。

これはwgetのバージョン1.10.2以降のデフォルトの動作です。
--auth-no-challengeオプションを使用して、この動作を変更できます。

このオプションを指定すると、Wgetは、デフォルトでWget 1.10.2以前と同様に、すべてのリクエストに対して基本HTTP認証情報(プレーンテキストのユーザー名とパスワード)を送信します。

このオプションの使用は推奨されておらず、HTTP認証のチャレンジを送信せず、フォームベース認証に加えて、たとえば未承諾の認証情報を受け入れる、いくつかの不明瞭なサーバーをサポートすることのみを目的としています。


これは、HTTP認証の一般的なデフォルトワークフローです。

enter image description here

HTTP認証の詳細をご覧ください。

3
pLumo