HttpClient
およびHttpWebRequest
.NETクラスのデフォルトの使用法は、Credentials
プロパティを設定し、クラスインスタンスにHTTPリクエストを実行するように要求することです。ターゲットがBasic承認を必要とする場合、次のことが起こります(これらのクラスは内部でこれを行い、Fiddlerは何が起こっているかを示します)。
Credentials
プロパティから適切にエンコードされたデータを含むAuthorizationヘッダーで再送信しますこれがデフォルトの動作です。したがって、ユーザーがアプリケーションを検証して追加の手順を実行しない限り、すべてのリクエストは2回送信されます-最初のリクエストは一般的に拒否されます。
私の質問は-そのようなデフォルトの動作の理由は何ですか?クライアントクラスにはCredentials
プロパティが設定されているため、ユーザーがこれらの資格情報を認証に使用することを想定しています。最初のリクエストで適切なヘッダーを送信しないのはなぜですか?後者を実行すると、どういうわけかクライアントが危険にさらされますか?
この動作は RFC2617 で指定されます。追加の往復の理由は、サーバーが基本認証、ダイジェスト認証など、さまざまな種類の認証を要求できるためです。サーバーが基本認証を行うことが事前にわかっている場合は、言うまでもなく、往復を節約できます。しかし、それはデフォルトではありません。NETライブラリは、これを公開するのと同じように正しいと思います。