Códigos de estado HTTP

Códigos que más ves en APIs y CDN. Se omiten los experimentales raros.

Actualizado:

CódigoNombreSignificado
200OKÉxito con cuerpo
201CreadoRecurso creado
204Sin contenidoÉxito, cuerpo vacío
301Movido permanentementeRedirección permanente
302EncontradoRedirección temporal
304No modificadoUsar copia en caché
400Solicitud incorrectaSolicitud del cliente inválida
401No autorizadoAutenticación requerida o fallida
403ProhibidoAutenticado pero denegado
404No encontradoEl recurso no existe
405Método no permitidoMétodo HTTP incorrecto
408Tiempo de espera agotadoCliente demasiado lento
409ConflictoConflicto de estado
410DesaparecidoEliminado permanentemente
422Entidad no procesableSemántica inválida
429Demasiadas solicitudesLímite de peticiones
500Error interno del servidorFallo del servidor
502Puerta de enlace incorrectaRespuesta upstream inválida
503Servicio no disponibleSobrecargado o caído
504Tiempo de espera de la puerta de enlace agotadoTiempo de espera del upstream agotado

Notas

Las cinco clases de códigos de estado

El primer dígito te indica quién es el responsable y, aproximadamente, qué sucedió. 1xx son informativos y raramente los ven los clientes. 2xx indican éxito — 200 OK con cuerpo, 204 No Content sin él, 206 para descarga parcial. 3xx indican que el recurso está en otro lugar. 4xx indican que la solicitud en sí es incorrecta: sintaxis mala, credenciales faltantes o límite de tasa. 5xx indican que el servidor falló aunque la solicitud estaba bien. Leer solo el primer dígito ya te dice si debes arreglar el cliente o escalar al lado del servidor.

Elegir la redirección adecuada

301 y 308 significan ambos permanente; 302 y 307 significan ambos temporal. La diferencia es cómo se maneja el método: 301 y 302 históricamente permitían a los clientes convertir un POST en GET, mientras que 307 y 308 preservan el método original y el cuerpo, lo cual importa para APIs y envíos de formularios. Usa 301 para una URL que se ha movido permanentemente, y 302 o 307 para enrutamiento temporal como páginas de mantenimiento o pruebas A/B. Cuidado con las cadenas: cada salto extra cuesta latencia y prestigio de enlace, así que redirige directamente al destino final.

Ordenando los errores 4xx

401 significa que falta o falló la autenticación, por lo que enviar credenciales válidas puede resolverlo; 403 significa que la solicitud fue entendida y autenticada pero no se permite, y reintentar con las mismas credenciales no ayudará. 404 significa que el recurso no existe; 410 indica que existía y está deliberadamente eliminado. 429 significa que alcanzaste un límite de tasa y debes retroceder, respetando cualquier encabezado Retry-After. 400 generalmente significa entrada malformada, 405 significa que el método es incorrecto para esa URL, y 422 significa que la sintaxis era válida pero el contenido falló la validación.

Leyendo los códigos 5xx

500 es un error interno genérico; 502 Bad Gateway significa que un servidor upstream devolvió algo inutilizable; 503 significa que el servicio está temporalmente no disponible o sobrecargado; 504 significa que un servidor upstream agotó el tiempo de espera. Estos son problemas del servidor, no del llamante, así que la solución es reintentar con retroceso, verificar la salud del servidor upstream o reducir la carga. Una CDN puede emitir 502, 503 o 504 en nombre de un origen al que no puede acceder, lo cual explica por qué el mismo error puede provenir de dos lugares muy diferentes: verifica los encabezados server y cache-status para averiguar cuál.

Códigos de estado en la práctica: APIs y caché

Dos usos cotidianos merecen atención. Primero, caché: 200 con un encabezado Cache-Control puede almacenarse, 304 Not Modified indica al cliente que reutilice su copia, y un 5xx no debe cachearse. Segundo, APIs: un POST que crea un recurso debe devolver 201 con un encabezado Location, DELETE suele devolver 204, y un PATCH que no cambia nada puede devolver 200 o 204. Los clientes bien comportados deciden primero según la clase (2xx, 4xx, 5xx) y solo después según el código exacto, lo que mantiene la lógica de reintento y retroceso simple y predecible.

Preguntas frecuentes

¿Qué significa el código HTTP 403?
403 Forbidden significa que el servidor entendió y autenticó la petición, pero rechaza dar acceso al recurso. A diferencia del 401, volver a iniciar sesión no lo soluciona.
¿Cuál es la diferencia entre las redirecciones HTTP 301 y 302?
301 indica un traslado permanente: clientes y buscadores deben usar la nueva URL. 302 es una redirección temporal y la URL original sigue siendo válida.
¿Qué significa HTTP 429 y cómo se soluciona?
429 significa que has superado un límite de peticiones. Reduce la frecuencia y respeta la cabecera Retry-After si el servidor la envía.

Fuentes