Saltar al contenido

Referencia de códigos de estado HTTP

HTTP Status Reference

Explica cada código de estado con su significado según la especificación, su comportamiento de caché y los errores habituales al usarlo.

Una referencia con búsqueda de todos los códigos de estado HTTP: qué significa cada uno, qué RFC lo define, si una caché puede almacenarlo por defecto, y con qué cabecera tiene que enviarse. La búsqueda coincide con el código, el nombre y el resumen, y acepta consultas en inglés, coreano, japonés, chino simplificado y español.

🔒 Se ejecuta por completo en tu navegadorhttpstatusreference

Busca en el código, el nombre, el resumen y las notas, en inglés, coreano, japonés, chino simplificado y español.

Clase

404 Not Found

404Not Found

No hay ningún recurso en esta URL.

Error del cliente — La culpa es de la solicitud. Reintentarla sin cambios fallará igual.

Definido en
RFC 9110 §15.5.5
Cacheable por omisión
sí

Se puede guardar en caché por omisión: un hecho que sorprende a todo el mundo la primera vez que una CDN sigue devolviendo un 404 para una página que ya existe.

62 de 62 códigos

Todos los códigos de estado HTTP, con su significado.
CódigoNombreSignificaCacheable
100ContinueEl cliente puede continuar y enviar el cuerpo de la solicitud.no
101Switching ProtocolsEl servidor está cambiando al protocolo que pidió el cliente.no
102ProcessingWebDAV: la solicitud se está procesando.no
103Early HintsEncabezados preliminares, para que el cliente empiece a precargar antes de la respuesta real.no
200OKLa solicitud salió bien.sí
201CreatedSe creó un recurso nuevo.no
202AcceptedLa solicitud se aceptó, pero todavía no se ha ejecutado.no
203Non-Authoritative InformationUn proxy modificó la respuesta que está retransmitiendo.sí
204No ContentÉxito, y a propósito no hay cuerpo.sí
205Reset ContentÉxito; el cliente debería vaciar el formulario que envió.no
206Partial ContentEl rango de bytes que se pidió.sí
207Multi-StatusWebDAV: un cuerpo XML con un estado por cada subsolicitud.no
208Already ReportedWebDAV: este miembro ya se había enumerado.no
226IM UsedLa respuesta es el resultado de aplicar manipulaciones de instancia.no
300Multiple ChoicesHay varias representaciones; elige una.sí
301Moved PermanentlyEl recurso tiene una URL nueva, para siempre.sí
302FoundUna redirección temporal.no
303See OtherVe a buscar la otra URL con GET.no
304Not ModifiedLa copia en caché sigue sirviendo.no
305Use ProxyObsoleto: el cliente debería usar el proxy indicado.no
307Temporary RedirectUna redirección temporal que conserva el método.no
308Permanent RedirectUna redirección permanente que conserva el método.sí
400Bad RequestLa solicitud está mal formada y el servidor no la va a procesar.no
401UnauthorizedHace falta autenticarse, o las credenciales que se dieron fueron rechazadas.no
402Payment RequiredReservado, y nunca se le dio un significado.no
403ForbiddenEl servidor entendió, y se niega.no
404Not FoundNo hay ningún recurso en esta URL.sí
405Method Not AllowedLa URL existe; este método no le corresponde.sí
406Not AcceptableNada de lo que el servidor puede producir encaja con el encabezado `Accept`.no
407Proxy Authentication RequiredEl proxy pide credenciales.no
408Request TimeoutEl cliente tardó demasiado en enviar la solicitud.no
409ConflictLa solicitud choca con el estado actual.no
410GoneEstuvo aquí y a propósito no va a volver.sí
411Length RequiredHace falta un encabezado `Content-Length`.no
412Precondition FailedNo se cumplió una condición `If-Match` o `If-Unmodified-Since`.no
413Content Too LargeEl cuerpo es más grande de lo que el servidor acepta.no
414URI Too LongLa URL es más larga de lo que el servidor acepta.sí
415Unsupported Media TypeEl `Content-Type` del cuerpo no es de los que el servidor maneja.no
416Range Not SatisfiableEl rango que se pidió cae fuera del recurso.no
417Expectation FailedNo se puede cumplir el encabezado `Expect`.no
418I'm a teapotUna broma del Día de los Inocentes de 1998 que nunca se fue.no
421Misdirected RequestEste servidor no puede producir una respuesta para esta autoridad.no
422Unprocessable ContentBien formado, pero semánticamente equivocado.no
423LockedWebDAV: el recurso está bloqueado.no
424Failed DependencyWebDAV: una solicitud anterior de la secuencia falló.no
425Too EarlyEl servidor no quiere arriesgarse a repetir una solicitud enviada como datos tempranos.no
426Upgrade RequiredEl cliente tiene que cambiar de protocolo.no
428Precondition RequiredEl servidor exige que la solicitud sea condicional.no
429Too Many RequestsLímite de peticiones alcanzado.no
431Request Header Fields Too LargeLos encabezados son demasiado grandes.no
451Unavailable For Legal ReasonsBloqueado por una exigencia legal.sí
500Internal Server ErrorAlgo salió mal y el servidor no tiene nada más concreto que decir.no
501Not ImplementedEl servidor no admite ese método en absoluto.sí
502Bad GatewayUn servidor de más arriba mandó algo que no vale.no
503Service UnavailableTemporalmente incapaz de atender la solicitud.no
504Gateway TimeoutUn servidor de más arriba no respondió a tiempo.no
505HTTP Version Not SupportedNo se admite la versión de HTTP que trae la solicitud.no
506Variant Also NegotiatesUna mala configuración de la negociación de contenido.no
507Insufficient StorageWebDAV: no hay sitio suficiente para guardar la representación.no
508Loop DetectedWebDAV: un bucle infinito mientras se procesaba.no
510Not ExtendedHacen falta más extensiones.no
511Network Authentication RequiredUn portal cautivo quiere que inicies sesión.no

Los que se confunden

401 significa «no sé quién eres»: manda credenciales y vuelve a intentarlo. 403 significa «sé quién eres y la respuesta es no». Si las credenciales eran válidas pero insuficientes, es 403.
El 400 es para una solicitud que el servidor no puede analizar. El 422 es para una que analizó perfectamente y con la que no está de acuerdo. Un cliente puede reintentar un 422 con otros datos; un 400 suele querer decir que el propio cliente está roto.
El primer eje es la permanencia (301/308 permanentes, 302/307 temporales) y el segundo es la conservación del método (307/308 lo conservan, 301/302 históricamente no). Si dudas en una API, usa 307 o 308.
Los dos vienen de un proxy y no de tu aplicación. El 502 es «el de arriba contestó un sinsentido o se murió»; el 504 es «el de arriba nunca contestó». El segundo es un tiempo de espera que puedes ajustar; el primero es una caída que tienes que arreglar.
Los dos quieren decir que ahí no hay nada. El 410 quiere decir además que no volverá nunca, y los buscadores actúan en consecuencia en días y no en meses.
El 405 es «en esta URL no, pero aquí está lo que sí» —y debe mandar un encabezado `Allow`—. El 501 es «este servidor no implementa ese método en ninguna parte».
Aquí «cacheable» significa cacheable de forma heurística: RFC 9110 §15.1 enumera los códigos que una caché puede guardar cuando nada dice lo contrario. El 404 está en esa lista, y así es como una CDN acaba sirviendo un «no encontrado» para una página que ya publicaste.

Cómo se usa

  1. Busca o filtra por clase

    Escribe un número, un nombre o el problema que tienes: «gateway», «rate limit», «unauthorized». También en español: «autenticación» lleva al 401 y «no encontrado» al 404, igual que «authentication» y «not found». O acota a 4xx y lee hacia abajo.

  2. Abre uno para el detalle

    El panel de detalle da la especificación que lo define, si es cacheable heurísticamente, y cualquier cabecera que la respuesta esté obligada a llevar: un 405 sin `Allow` y un 301 sin `Location` están ambos incompletos.

  3. Lee los pares confundibles

    La sección del final cubre los que se eligen mal: 401 frente a 403, 302 frente a 307, 502 frente a 504.

Preguntas frecuentes

¿Cuál es la diferencia entre 401 y 403?

401 significa que la petición no tenía credenciales válidas y debe incluir una cabecera `WWW-Authenticate` diciendo cómo proporcionarlas. 403 significa que las credenciales se entendieron y no son suficientes. Enviar 401 a un usuario con sesión iniciada pero sin permiso es el error común.

¿Por qué mi CDN está cacheando un 404?

Porque puede. RFC 9110 §15.1 lista los códigos de estado que una caché puede almacenar heurísticamente cuando nada más dice lo contrario, y 404 está en ella. Una página que has publicado después sigue sin encontrarse hasta que la caché expira o la purgas: envía `Cache-Control: no-store` en un 404 que esperas que se convierta en 200.

¿302 o 307?

307 si quieres que el método se conserve. Históricamente los clientes convertían un POST en GET ante un 302 —la especificación no decía que lo hicieran, pero todos lo hacían—, así que 307 y 308 existen para decir «mismo método, nueva URL» sin ambigüedad.

¿Puedo inventar mi propio código de estado?

Puedes enviar cualquier cosa, y los clientes tratarán un código desconocido como el miembro genérico de su clase: un 499 se maneja como un 400. Pero las cachés, los proxies y las bibliotecas toman decisiones según la clase, así que un código no registrado no te da nada que una cabecera no pudiera transportar mejor.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.