L'utilisation par défaut de HttpClient
et HttpWebRequest
.NET classes est réglant Credentials
propriété, puis demandez à l'instance de classe d'effectuer une demande HTTP. Si la cible requre BASIC Autorisation Ce qui suit se produit (ces classes le font sous le capot et le violondler montre ce qui se passe):
Credentials
propriétéet c'est le comportement par défaut. Donc, à moins que l'utilisateur valide sa demande et prend des mesures supplémentaires, chaque demande est envoyée deux fois - la première est universellement rejetée.
Ma question est - quelle est la raison de ce comportement par défaut? La classe client a son ensemble de propriétés Credentials
afin qu'il suppose en quelque sorte que l'utilisateur souhaite utiliser ces informations d'identification pour l'authentification. Pourquoi ne pas simplement envoyer l'en-tête approprié avec la première demande? Faire ce dernier compromet au client?
Ce comportement est spécifié par RFC2617 . La raison de l'aller-retour supplémentaire est que le serveur peut demander différents types d'authentification: Basic, Digest, etc. Si vous savez à l'avance que le serveur prend une authentification de base, alors comme vous le dites, vous pouvez enregistrer un aller-retour. Mais ce n'est pas la valeur par défaut, et je pense que les bibliothèques .NET ont raison d'exposer cela comme ils le font.