Diversi server con cui ho gestito restituiranno HTTP 200 per richieste che il client dovrebbe considerare un errore, con qualcosa come "successo: falso" nel corpo.
Questo non mi sembra una corretta implementazione dei codici HTTP, in particolare nei casi di autenticazione fallita. Ho letto i codici di errore HTTP riassunti sinteticamente in quanto, "4xx" indica che la richiesta non deve essere ripetuta fino a quando non viene modificata, mentre "5xx" indica che la richiesta può o non può essere valida e può essere tentata, ma non ha avuto successo. In questo caso 200: login fallito, o 200: impossibile trovare quel file, o 200: mancante parametro x, sicuramente sembra sbagliato.
D'altra parte, ho potuto vedere l'argomento che è stato fatto che '4xx' dovrebbe solo indicare un problema strutturale con la richiesta. Quindi è corretto restituire 200: utente / password errati anziché 401 non autorizzati perché il client è autorizzato a fare la richiesta, ma è errato. Questo argomento potrebbe essere riassunto come, se il server fosse in grado di elaborare la richiesta e fare una determinazione, il codice di risposta dovrebbe essere 200, e spetta al cliente controllare il corpo per ulteriori informazioni.
Fondamentalmente, questa sembra essere una questione di preferenza. Ma questo è insoddisfacente, quindi se qualcuno ha una ragione per cui uno di questi paradigmi è più corretto, mi piacerebbe sapere.