Códigos de Estado HTTP: Guía Completa a las Respuestas Web
En el corazón de la comunicación entre navegadores web y servidores web se encuentran los http server response codes o códigos de estado HTTP, también conocidos como status codes in HTTP. Estos códigos son mensajes concisos que informan sobre el resultado de una solicitud web realizada por el navegador al servidor. Son mensajes numéricos de tres dígitos que proporcionan información sobre el éxito o el fracaso de la solicitud, y ayudan a comprender la naturaleza de la respuesta.
Entender los códigos de estado HTTP es esencial para desarrolladores web, administradores de sistemas y cualquier persona involucrada en el desarrollo y la gestión de aplicaciones web. Permiten diagnosticar problemas, identificar errores y optimizar el rendimiento de las aplicaciones web.
Clasificación de los Códigos de Estado HTTP
Los códigos de estado HTTP se clasifican en cinco categorías principales, cada una con un significado específico:
1xx: Informativas
Estas respuestas indican que la solicitud se ha recibido y se está procesando, pero la respuesta aún no está completa.
- 100 Continue: Indica al cliente que continúe con la solicitud, ya que el servidor ha recibido las cabeceras y está listo para recibir el cuerpo de la solicitud.
- 101 Switching Protocols: Indica que el servidor está cambiando el protocolo según la solicitud del cliente.
- 102 Processing: Indica que el servidor ha recibido la solicitud y está procesándola.
2xx: Éxito
Estas respuestas indican que la solicitud se ha completado correctamente.
- 200 OK: Indica que la solicitud se ha completado correctamente y el servidor está devolviendo la respuesta esperada.
- 201 Created: Indica que la solicitud ha sido completada y el servidor ha creado un nuevo recurso.
- 202 Accepted: Indica que la solicitud ha sido aceptada, pero no se ha procesado todavía.
- 203 Non-Authoritative Information: Indica que la respuesta es de una fuente secundaria y no se garantiza su precisión.
- 204 No Content: Indica que la solicitud se ha completado correctamente, pero el servidor no devuelve ningún contenido.
- 205 Reset Content: Indica que la solicitud se ha completado correctamente y el cliente debe reiniciar el contenido.
- 206 Partial Content: Indica que la solicitud se ha completado parcialmente y se ha devuelto un fragmento del contenido solicitado.
3xx: Redirecciones
Estas respuestas indican que la solicitud necesita ser redirigida a una ubicación diferente.
- 300 Multiple Choices: Indica que hay varias opciones disponibles para completar la solicitud y el cliente debe elegir una.
- 301 Moved Permanently: Indica que el recurso solicitado se ha movido permanentemente a una nueva ubicación.
- 302 Found: Indica que el recurso solicitado se ha encontrado temporalmente en otra ubicación.
- 303 See Other: Indica que la respuesta se puede encontrar en otra ubicación, pero se recomienda que se use el método GET para acceder a la nueva ubicación.
- 304 Not Modified: Indica que el recurso no ha sido modificado desde la última solicitud del cliente.
- 305 Use Proxy: Indica que el cliente debe usar un proxy para acceder al recurso solicitado.
- 307 Temporary Redirect: Indica que el recurso solicitado se ha movido temporalmente a otra ubicación.
- 308 Permanent Redirect: Similar a 301, pero la solicitud no debe cambiar el método (GET, POST, etc.).
4xx: Error del Cliente
Estas respuestas indican que la solicitud no se ha podido completar debido a un error del cliente.
- 400 Bad Request: Indica que la solicitud del cliente es inválida.
- 401 Unauthorized: Indica que el cliente no está autorizado para acceder al recurso solicitado.
- 403 Forbidden: Indica que el cliente tiene permiso para acceder al recurso, pero no tiene permisos suficientes para realizar la acción solicitada.
- 404 Not Found: Indica que el recurso solicitado no se encuentra en el servidor.
- 405 Method Not Allowed: Indica que el método de la solicitud no está permitido para el recurso solicitado.
- 406 Not Acceptable: Indica que el servidor no puede proporcionar el contenido en el formato solicitado por el cliente.
- 407 Proxy Authentication Required: Indica que el cliente debe autenticarse con el proxy para acceder al recurso solicitado.
- 408 Request Timeout: Indica que la solicitud ha expirado antes de ser procesada por el servidor.
- 409 Conflict: Indica que la solicitud no pudo ser completada debido a un conflicto con el recurso solicitado.
- 410 Gone: Indica que el recurso solicitado ha sido eliminado permanentemente.
- 411 Length Required: Indica que la solicitud debe especificar el tamaño del cuerpo de la solicitud.
- 412 Precondition Failed: Indica que la condición previa especificada por el cliente no se cumple.
- 413 Request Entity Too Large: Indica que el cuerpo de la solicitud es demasiado grande.
- 414 Request-URI Too Long: Indica que la URI de la solicitud es demasiado larga.
- 415 Unsupported Media Type: Indica que el tipo de medio del cuerpo de la solicitud no es compatible por el servidor.
- 416 Requested Range Not Satisfiable: Indica que la solicitud incluye un rango de bytes que no se puede satisfacer.
- 417 Expectation Failed: Indica que el servidor no puede cumplir las expectativas especificadas por el cliente.
- 422 Unprocessable Entity: Indica que la solicitud fue bien formada, pero no pudo ser procesada debido a errores de validación.
- 423 Locked: Indica que el recurso solicitado está bloqueado y no puede ser modificado.
- 424 Failed Dependency: Indica que la solicitud no pudo ser completada debido a que depende de un recurso que ha fallado.
- 426 Upgrade Required: Indica que el servidor requiere una versión más reciente del protocolo HTTP.
- 428 Precondition Required: Indica que el cliente debe incluir una condición previa en la solicitud.
- 429 Too Many Requests: Indica que el cliente ha enviado demasiadas solicitudes en un período de tiempo corto.
- 431 Request Header Fields Too Large: Indica que las cabeceras de la solicitud son demasiado grandes.
5xx: Error del Servidor
Estas respuestas indican que la solicitud no se ha podido completar debido a un error del servidor.
- 500 Internal Server Error: Indica que el servidor ha encontrado un error inesperado al intentar procesar la solicitud.
- 501 Not Implemented: Indica que el servidor no admite el método de la solicitud.
- 502 Bad Gateway: Indica que el servidor está actuando como una puerta de enlace y ha recibido una respuesta inválida del servidor de origen.
- 503 Service Unavailable: Indica que el servidor está temporalmente fuera de servicio.
- 504 Gateway Timeout: Indica que el servidor está actuando como una puerta de enlace y ha tardado demasiado en recibir una respuesta del servidor de origen.
- 505 HTTP Version Not Supported: Indica que el servidor no admite la versión del protocolo HTTP utilizada por el cliente.
Extensibilidad de los Códigos de Estado HTTP
Los códigos de estado HTTP son extensibles, lo que significa que se pueden definir nuevos códigos para necesidades específicas. La IANA (Internet Assigned Numbers Authority) mantiene una lista de códigos de estado registrados, pero no es obligatorio que las aplicaciones HTTP los implementen todos. Las aplicaciones HTTP pueden elegir implementar solo los códigos que sean relevantes para su uso.
Conclusión
Los códigos de estado HTTP son una parte fundamental de la comunicación web. Proporcionan información valiosa sobre el estado de las solicitudes web y ayudan a los desarrolladores a identificar y solucionar problemas. Entender estos códigos es esencial para cualquier persona que trabaje con aplicaciones web, desde el desarrollo hasta la gestión.