L'utilizzo predefinito delle classi HttpClient
e HttpWebRequest
.NET sta impostando la proprietà Credentials
e quindi richiede all'istanza della classe di eseguire una richiesta HTTP. Se il target richiede l'autorizzazione Basic , succede quanto segue (quelle classi lo fanno sotto controllo e Fiddler mostra cosa sta succedendo):
- la prima richiesta viene inviata senza autorizzazione intestazione
- il server rifiuta e risponde con HTTP 401
- il client invia di nuovo la stessa richiesta questa volta con l'intestazione Autorizzazione contenente i dati correttamente codificati dalla proprietà
Credentials
e questo è il comportamento predefinito. Quindi, a meno che l'utente non convalidi la sua applicazione e prenda ulteriori passaggi, ogni richiesta viene inviata due volte - la prima è universalmente respinta.
La mia domanda è: qual è la ragione di questo comportamento predefinito? La classe client ha la sua proprietà Credentials
impostata in modo tale da presupporre che l'utente voglia utilizzare tali credenziali per l'autenticazione. Perché non basta inviare l'intestazione appropriata con la prima richiesta? Farebbe quest'ultimo in qualche modo compromettere il client?