Varios servidores con los que he tratado devolverán HTTP 200 para solicitudes que el cliente debería considerar una falla, con algo como 'éxito: falso' en el cuerpo.
Esto no me parece una implementación adecuada de los códigos HTTP, especialmente en casos de autenticación fallida. He leído los códigos de error HTTP resumidos de manera bastante sucinta, ya que '4xx' indica que la solicitud no debe hacerse nuevamente hasta que se modifique, mientras que '5xx' indica que la solicitud puede o no ser válida y puede volver a intentarse, pero no tuvo éxito. En este caso, 200: error de inicio de sesión, o 200: no se pudo encontrar ese archivo, o 200: falta el parámetro x, definitivamente parece incorrecto.
Por otro lado, pude ver el argumento de que '4xx' solo debe indicar un problema estructural con la solicitud. Por lo tanto, es correcto devolver 200: usuario incorrecto / contraseña en lugar de 401 no autorizado porque el cliente tiene permiso para realizar la solicitud, pero resulta que es incorrecto. Este argumento podría resumirse como: si el servidor pudiera procesar la solicitud y hacer una determinación, el código de respuesta debería ser 200, y el cliente debe verificar el cuerpo para obtener más información.
Básicamente, esto parece ser una cuestión de preferencia. Pero eso no es satisfactorio, por lo que si alguien tiene una razón por la que cualquiera de estos paradigmas sea más correcto, me gustaría saberlo.