17

Leí What HTTP status response code should I use if the request is missing a required parameter? pero no pregunté específicamente sobre los encabezados y no parecía haber consenso.¿Cuál es el código de estado HTTP más apropiado para devolver si falta un encabezado requerido?

El contexto de esta pregunta supone una autenticación exitosa. Actualmente estoy a favor ya sea un 400 (aunque eso no se siente bien, porque esto no es realmente un caso de "sintaxis incorrecta") o 403. En vista de 403 Descripción:

El servidor ha entendido la solicitud, pero se niega a cumplirlo. La autorización no ayudará y la solicitud NO DEBE repetirse. Si el método de solicitud no era HEAD y el servidor desea hacer público por qué la solicitud no se ha cumplido, DEBERÍA describir el motivo para la denegación en la entidad.

Esto tiene más sentido para mí.

¿Alguien puede por favor aclararme? Gracias.

Respuesta

28

400 Pedido incorrecto

Es un error de usuario en la solicitud. A diferencia con un 403, el cliente debe se permitirá repetir su petición, pero sólo después de la modificación:

10.4.1 400 Bad Request La solicitud no pudo ser entendido por el servidor debido a la malformación sintaxis. El cliente NO DEBE repetir la solicitud sin modificaciones.

Edición

Como señala Mark Reed en los comentarios, un 403 dice: "No hay nada malo en lo que me ha enviado. Usted tiene la debida autorización y la sintaxis válida. Yo simplemente no quiero hacer lo que me pides ".

La parte que tienes en negrita simplemente dice que, si el servidor así lo elige, puede decirle al cliente exactamente por qué no desea cumplir con la solicitud.

+1

Definitivamente 400. Si hay algo malo con la solicitud que no depende del estado del servidor, es un 400. Si lo único malo está en el lado del servidor ("Por lo que usted sabe, esa es una petición perfectamente cromática, pero no estoy de humor "), luego usas 403. –

+0

Gracias por los comentarios, muchachos. –

+0

¿Qué pasa con 412 (precondición fallida)? –

Cuestiones relacionadas