Referencia de códigos de estado HTTP
Cada respuesta HTTP empieza con un código de estado de tres dígitos, el llamado “código HTTP”, que indica al cliente el resultado de su solicitud. Explora los códigos por clase, de los informativos a los códigos de error HTTP, con explicaciones claras, ejemplos de respuesta y lo que implica cada uno para las redirecciones y el SEO.
1xx Informativo
La solicitud se recibió y el procesamiento continúa. Estas respuestas provisionales llegan antes de la respuesta final y nunca cierran una cadena de redirecciones.
- 100
Continue
Respuesta provisional: el servidor aceptó los encabezados de la solicitud y el cliente, que envió “Expect: 100-continue”, ya puede enviar el cuerpo. - 101
Switching Protocols
El servidor acepta la solicitud Upgrade del cliente y cambia la conexión a otro protocolo; en la práctica, casi siempre WebSocket. - 102
Processing
Respuesta provisional obsoleta de WebDAV que indica al cliente que el servidor sigue trabajando en una solicitud larga y que debe seguir esperando. - 103
Early Hints
Respuesta provisional con encabezados Link, previa a la final, para que el navegador precargue recursos o se preconecte mientras el servidor trabaja.
2xx Éxito
La solicitud se recibió, se entendió y se aceptó. Una cadena de redirecciones sana termina en uno de estos códigos, normalmente en 200 OK.
- 200
OK
La solicitud se completó con éxito; en un GET, el cuerpo contiene el recurso solicitado. Toda cadena de redirecciones debería terminar en una URL con 200. - 201
Created
La solicitud se completó y creó un recurso nuevo, normalmente tras un POST o un PUT. El encabezado Location, si existe, apunta al nuevo recurso. - 202
Accepted
La solicitud se aceptó para su procesamiento, pero aún no ha terminado. Se usa en tareas asíncronas; el resultado final no está garantizado. - 203
Non-Authoritative Information
La solicitud se completó, pero un proxy de transformación modificó la respuesta, así que el contenido no es exactamente el que envió el servidor de origen. - 204
No Content
La solicitud se completó y no hay contenido que enviar. El navegador se queda en la página actual; habitual en DELETE, beacons y preflight de CORS. - 205
Reset Content
La solicitud se completó y el cliente debe restablecer la vista del documento, por ejemplo vaciar el formulario que se acaba de enviar. - 206
Partial Content
El servidor envía solo los rangos de bytes que el cliente pidió con un encabezado Range, como en el streaming de video y las descargas reanudables. - 207
Multi-Status
Respuesta de WebDAV que incluye un código de estado distinto para cada uno de varios recursos o propiedades en un cuerpo XML multistatus. - 208
Already Reported
Va dentro de una respuesta 207 de WebDAV: los miembros de esta colección ya se listaron, lo que evita repeticiones sin fin si los bindings forman bucles. - 226
IM Used
El servidor respondió a un GET con codificación delta (RFC 3229): el cuerpo contiene solo los cambios respecto a una versión que el cliente ya tiene.
3xx Redirección
El cliente tiene que hacer algo más, normalmente solicitar la URL que indica el encabezado Location. Son los códigos que forman una cadena de redirecciones.
- 300
Multiple Choices
El recurso tiene varias representaciones y el cliente puede elegir. Los navegadores no siguen un 300 automáticamente, ni siquiera con encabezado Location. - 301
Moved Permanently
El recurso tiene una nueva URL permanente, indicada en el encabezado Location. Clientes y buscadores deberían usar la nueva URL a partir de ahora. - 302
Found
El recurso está temporalmente en otra URL. Los clientes siguen el encabezado Location, pero en el futuro deben seguir usando la URL original. - 303
See Other
Redirige al cliente a otra URL que debe obtener con GET, normalmente para mostrar una página de resultado tras enviar un formulario (Post/Redirect/Get). - 304
Not Modified
Respuesta a un GET o HEAD condicional: la copia en caché del cliente sigue siendo válida, así que el servidor no envía cuerpo y se reutiliza esa copia. - 305
Use Proxy
Obsoleto. Indicaba al cliente que repitiera la solicitud a través del proxy indicado en Location; los navegadores lo ignoran por motivos de seguridad. - 306
Sin uso (antes Switch Proxy)
Reservado y sin uso. El 306 se propuso en su día como “Switch Proxy”, pero se descartó; no debe usarse y los clientes lo tratan como un 3xx desconocido. - 307
Temporary Redirect
Redirección temporal: la solicitud se repite con el mismo método y cuerpo en la URL de Location, a diferencia del 302, que puede convertir un POST en GET. - 308
Permanent Redirect
Redirección permanente que conserva el método y el cuerpo. Como con el 301, debe usarse la nueva URL a partir de ahora, pero un POST nunca pasa a GET.
4xx Error del cliente
La solicitud no se puede atender tal como se envió: la página no existe, el acceso está denegado o el cliente envió demasiadas solicitudes.
- 400
Bad Request
El servidor no procesará la solicitud por un error del cliente, como una sintaxis mal formada, una URL no válida o cookies demasiado grandes. - 401
Unauthorized
La solicitud requiere autenticación válida. El servidor debe enviar un encabezado WWW-Authenticate que indique cómo autenticarse, como Basic o Bearer. - 402
Payment Required
Reservado en HTTP para uso futuro. En la práctica, algunas API y servicios lo usan cuando hace falta un pago, saldo o una suscripción. - 403
Forbidden
El servidor entendió la solicitud, pero se niega a autorizarla. A diferencia del 401, volver a enviar las mismas credenciales no servirá de nada. - 404
Not Found
El servidor no tiene nada en esta URL o no quiere decir si existe algo. No indica si la ausencia es temporal o permanente. - 405
Method Not Allowed
La URL existe, pero no admite el método HTTP usado, por ejemplo un POST a una página estática. El encabezado Allow lista los métodos admitidos. - 406
Not Acceptable
El servidor no puede generar una respuesta acorde con los encabezados Accept del cliente (formato, idioma, codificación) y no envía una predeterminada. - 407
Proxy Authentication Required
Como el 401, pero es un proxy entre el cliente y el servidor el que exige autenticación. El encabezado Proxy-Authenticate indica cómo autenticarse. - 408
Request Timeout
El servidor no recibió una solicitud completa a tiempo y cierra la conexión. El cliente puede volver a enviarla por una conexión nueva. - 409
Conflict
La solicitud entra en conflicto con el estado actual del recurso, por ejemplo un conflicto de edición, un registro duplicado o una versión que no coincide. - 410
Gone
El recurso se eliminó a propósito y no se espera que vuelva. Es una señal más explícita y permanente que un 404 Not Found. - 411
Length Required
El servidor rechaza una solicitud con cuerpo pero sin encabezado Content-Length. El cliente puede volver a enviarla con un Content-Length válido. - 412
Precondition Failed
Una condición de los encabezados de la solicitud, como If-Match o If-Unmodified-Since, resultó falsa, así que el servidor no aplicó el cambio. - 413
Content Too Large
El cuerpo de la solicitud supera lo que acepta el servidor, como en subidas muy grandes. Antes se llamaba “Payload Too Large” y “Request Entity Too Large”. - 414
URI Too Long
La URL solicitada es más larga de lo que el servidor admite, por ejemplo porque un bucle de redirecciones sigue agregando parámetros a la URL. - 415
Unsupported Media Type
El servidor rechaza el cuerpo de la solicitud porque no admite su formato (Content-Type) o su codificación de contenido (Content-Encoding). - 416
Range Not Satisfiable
El rango de bytes del encabezado Range queda fuera del archivo, como cuando una descarga se reanuda más allá del final de un archivo que cambió. - 417
Expectation Failed
El servidor no puede cumplir la expectativa del encabezado Expect de la solicitud. En la práctica, significa que no admite Expect: 100-continue. - 418
I'm a Teapot
Broma del 1 de abril de 1998 (RFC 2324), un protocolo para controlar cafeteras. Reservado y sin uso en HTTP, pero algunos sitios lo devuelven a propósito. - 421
Misdirected Request
La solicitud llegó a un servidor que no puede responder por ese host, a menudo por un SNI de TLS que no coincide o una conexión HTTP/2 reutilizada. - 422
Unprocessable Content
La solicitud está bien formada, pero su contenido no es válido semánticamente; suele ser un error de validación en una API. Antes, “Unprocessable Entity”. - 423
Locked
WebDAV: el recurso está bloqueado y el método no se puede aplicar ahora. El cliente necesita el token de bloqueo o debe esperar a que se libere. - 424
Failed Dependency
WebDAV: el método no se pudo ejecutar porque falló otra acción de la que dependía, por ejemplo una sola propiedad en un PROPPATCH. - 425
Too Early
El servidor no procesará una solicitud enviada como datos anticipados de TLS (0-RTT), porque podría repetirse. El cliente reintenta tras el handshake. - 426
Upgrade Required
El servidor se niega a atender la solicitud con el protocolo actual y exige cambiar al protocolo indicado en el encabezado Upgrade. - 428
Precondition Required
El servidor exige que la solicitud sea condicional (If-Match) para evitar la pérdida de cambios cuando varios clientes editan el mismo recurso. - 429
Too Many Requests
El cliente envió demasiadas solicitudes en poco tiempo (límite de solicitudes). Un encabezado Retry-After puede indicar cuánto esperar antes de reintentar. - 431
Request Header Fields Too Large
El servidor rechaza la solicitud porque sus encabezados son demasiado grandes, normalmente porque el navegador envía demasiadas cookies o muy grandes. - 444
No Response
nginx Código no estándar de nginx: el servidor cierra la conexión sin enviar ninguna respuesta. El cliente recibe una respuesta vacía y nunca un 444. - 451
Unavailable For Legal Reasons
Se deniega el acceso por una exigencia legal, como una orden judicial o un bloqueo gubernamental. Su número alude a Fahrenheit 451, de Ray Bradbury. - 499
Client Closed Request
nginx Código no estándar que nginx anota en su registro de acceso cuando el cliente cerró la conexión antes de que el servidor enviara su respuesta.
5xx Error del servidor
El servidor no pudo completar una solicitud aparentemente válida. Los errores 5xx persistentes bloquean por igual a visitantes y rastreadores.
- 500
Internal Server Error
Fallo genérico del lado del servidor: algo salió mal en el servidor, como un fallo de la aplicación o un archivo de configuración roto. - 501
Not Implemented
El servidor no admite la funcionalidad necesaria para atender la solicitud; normalmente, un método HTTP que no reconoce. - 502
Bad Gateway
Una puerta de enlace o un proxy recibió una respuesta no válida del servidor upstream, por ejemplo porque se cayó la aplicación que hay detrás de nginx. - 503
Service Unavailable
El servidor no puede atender la solicitud temporalmente por sobrecarga o mantenimiento. Retry-After puede indicar cuándo volver a intentarlo. - 504
Gateway Timeout
Una puerta de enlace o un proxy no recibió a tiempo la respuesta del servidor upstream, normalmente porque la aplicación es demasiado lenta. - 505
HTTP Version Not Supported
El servidor no admite, o se niega a admitir, la versión principal de HTTP de la solicitud. Hoy suele indicar una línea de solicitud mal formada. - 506
Variant Also Negotiates
Error de configuración en la negociación transparente de contenido (RFC 2295): la variante elegida también es negociable, lo que crea un bucle. - 507
Insufficient Storage
WebDAV: el servidor no puede almacenar los datos necesarios para completar la solicitud, por ejemplo porque el disco está lleno o se agotó la cuota. - 508
Loop Detected
WebDAV: el servidor detuvo una operación Depth: infinity al encontrar un bucle infinito de bindings. No tiene relación con los bucles de redirecciones. - 510
Not Extended
Del obsoleto HTTP Extension Framework (RFC 2774): a la solicitud le falta una declaración de extensión obligatoria. Histórico y prácticamente sin uso. - 511
Network Authentication Required
La red, normalmente un portal cautivo de Wi-Fi, exige iniciar sesión antes de dar acceso. Lo envía la red que intercepta, no el servidor de origen. - 520
Web Server Returned an Unknown Error
Cloudflare Específico de Cloudflare: el origen devolvió una respuesta vacía, desconocida o inesperada, por ejemplo tras un fallo o una conexión restablecida. - 521
Web Server Is Down
Cloudflare Específico de Cloudflare: el servidor de origen rechazó la conexión de Cloudflare, normalmente porque el servidor web está caído o bloquea a Cloudflare. - 522
Connection Timed Out
Cloudflare Específico de Cloudflare: Cloudflare no pudo completar a tiempo una conexión TCP con el origen, o el origen no confirmó la recepción de la solicitud. - 523
Origin Is Unreachable
Cloudflare Específico de Cloudflare: Cloudflare no puede llegar al origen en absoluto, normalmente por un problema de enrutamiento o una IP de origen errónea en DNS. - 524
A Timeout Occurred
Cloudflare Específico de Cloudflare: se conectó al origen, pero no recibió respuesta HTTP antes de agotar su tiempo de lectura (unos dos minutos por defecto). - 525
SSL Handshake Failed
Cloudflare Específico de Cloudflare: falló el handshake TLS entre Cloudflare y el origen, por ejemplo porque el origen no tiene un certificado válido. - 526
Invalid SSL Certificate
Cloudflare Específico de Cloudflare: en modo Full (strict), Cloudflare no pudo validar el certificado del origen: caducado, autofirmado o emitido para otro nombre. - 530
Error 1xxx de Cloudflare
Cloudflare Específico de Cloudflare: se envía junto con un error 1xxx de Cloudflare, por ejemplo 1016 (error de DNS del origen) o 1033 (error de Cloudflare Tunnel).
Cómo leer un código de estado HTTP
El primer dígito indica la clase de la respuesta y los otros dos identifican su significado exacto dentro de esa clase. Un cliente que no reconoce un código concreto lo trata como el código x00 de su clase, así que un código 4xx desconocido se gestiona igual que un 400 Bad Request.
La frase de motivo (reason phrase) que sigue al número, como Not Found o Moved Permanently, es solo una descripción para las personas. Los clientes actúan únicamente según el número, y HTTP/2 y HTTP/3 ni siquiera envían frase de motivo.
Resumen de los códigos de redirección
- 301 Moved Permanently: permanente; los navegadores pueden convertir un POST en un GET. La opción por defecto cuando una página cambia de URL.
- 302 Found: temporal; el método puede cambiar. El comportamiento por defecto en muchos frameworks.
- 303 See Other: temporal; siempre se sigue con GET. Se usa tras el envío de un formulario.
- 307 Temporary Redirect: temporal; se conservan el método y el cuerpo.
- 308 Permanent Redirect: permanente; se conservan el método y el cuerpo.
- 304 Not Modified: no redirige a otra URL, sino que indica que la copia en caché del cliente sigue siendo válida.
Lee nuestra guía de códigos de redirección HTTP para saber cuándo conviene usar cada uno.
Los códigos de estado en una cadena de redirecciones
Una cadena de redirecciones es una serie de respuestas 3xx que termina en una respuesta final. El visitante o el rastreador solo recibe realmente el último código de estado, así que una cadena que termina en un 404 es un enlace roto, por muy limpias que parezcan las redirecciones anteriores. Usa el verificador de redirecciones de URL para ver el código de estado de cada salto (cada paso de la cadena), o el Verificador masivo de redirecciones para comprobar muchas URL a la vez.
Verificador de redirecciones de URL
Consulta todos los códigos de estado que devuelve una URL, salto a salto, con el verificador de redirecciones gratuito de TrueURL.