Inicio·Códigos y cabeceras HTTP

132 códigos de estado y cabeceras HTTP

Qué significan de verdad 404 y 500, y qué hacen Content-Type o Cache-Control, en una línea.

Códigos de estado

1xx Informativos4

Un aviso de progreso; la respuesta real llega después.

2xx Éxito10

La petición salió bien.

3xx Redirección7

Ve a otro lugar: lo que cambia es si es permanente o temporal.

4xx Error del cliente29

El problema está en la petición; repetirla igual volverá a fallar.

400 Bad RequestLa petición está mal formada y no se puede leer.401 UnauthorizedNo has dicho quién eres; iniciar sesión suele resolverlo.402 Payment RequiredSe requiere pago: está en el estándar, pero apenas se usa.403 ForbiddenEl servidor sabe quién eres y aun así lo niega; iniciar sesión puede no cambiarlo.404 Not FoundNo hay nada en esa dirección: la URL está mal o la página ya no existe.405 Method Not AllowedLa dirección existe pero no admite ese método.406 Not AcceptableEl servidor no puede dar el formato solicitado.407 Proxy Authentication RequiredUn proxy intermedio exige autenticación antes.408 Request TimeoutEl servidor esperó y la petición nunca llegó entera.409 ConflictLa petición choca con el estado actual: típico de dos ediciones simultáneas.410 GoneEliminado a propósito y sin vuelta: una despedida más clara que un 404.411 Length RequiredLa petición debe indicar la longitud del cuerpo y no lo hizo.412 Precondition FailedNo se cumplió una condición adjunta a la petición.413 Content Too LargeEl cuerpo enviado supera el tamaño que admite el servidor.414 URI Too LongLa URL es demasiado larga: suele pasar al acumular parámetros.415 Unsupported Media TypeEl servidor no puede manejar el tipo de contenido enviado.416 Range Not SatisfiableEl rango solicitado queda fuera del archivo.417 Expectation FailedNo se puede cumplir lo indicado en la cabecera Expect.418 I'm a teapotUn código en broma: la tetera se niega a hacer café. Nació de un RFC del día de los inocentes.421 Misdirected RequestEste servidor no es el indicado para esa petición.422 Unprocessable ContentLa sintaxis es correcta, pero el contenido incumple las reglas.423 LockedEl recurso está bloqueado.424 Failed DependencyFalló una petición anterior, así que esta tampoco puede seguir.425 Too EarlyEl servidor no arriesga procesar algo que podría ser una repetición.426 Upgrade RequiredHay que cambiar de protocolo para continuar.428 Precondition RequiredLa petición debe llevar una condición: así se evitan sobrescrituras.429 Too Many RequestsHas hecho demasiadas peticiones; Retry-After indica cuándo reintentar.431 Request Header Fields Too LargeLas cabeceras son demasiado grandes: suele deberse a cookies acumuladas.451 Unavailable For Legal ReasonsBloqueado por motivos legales; el número alude a la novela Fahrenheit 451.

5xx Error del servidor11

El problema está en el servidor; suele valer la pena reintentar.

Cabeceras

Cabeceras de petición28

Cabeceras que añade el navegador al enviar al servidor.

AcceptIndica qué formatos acepta el cliente.Accept-EncodingLista las compresiones que entiende el cliente; gzip o br reducen mucho el tamaño.Accept-LanguageDeclara los idiomas preferidos; los sitios multilingües eligen con esto.AuthorizationLleva las credenciales que prueban quién eres: un token o usuario y contraseña.CookieDevuelve las cookies que el servidor guardó antes.HostIndica el dominio solicitado: permite que un servidor aloje muchos sitios.If-Modified-SincePide el recurso solo si cambió después de esa hora.If-None-MatchPide el recurso solo si su ETag difiere: así revalida la caché.OriginIndica el origen de la petición; lo añade el navegador y CORS se basa en él.RangePide solo una parte del archivo: la base de la reanudación y del salto en vídeo.RefererIndica la página de procedencia; el error ortográfico quedó fijado en el estándar.User-AgentDescribe el navegador y el dispositivo; hoy casi todo es camuflaje.Sec-Fetch-DestDice para qué es la petición: imagen, script, documento.Sec-Fetch-ModeIndica si la petición es del mismo origen, CORS o navegación.Sec-Fetch-SiteDice si la petición viene del mismo sitio o de otro.DNTPide no ser rastreado; no obliga a nada y suele ignorarse.ExpectConsulta al servidor antes de enviar un cuerpo grande.ForwardedGuarda los datos originales del cliente tras pasar por proxies.FromLleva el correo de quien hace la petición; los rastreadores lo usan de contacto.If-MatchSolo procede si el ETag coincide: evita sobrescribir cambios ajenos.If-RangeReanuda si el archivo no cambió; si no, empieza de cero.Max-ForwardsLimita por cuántos proxies puede pasar la petición.Proxy-AuthorizationCredenciales para el proxy, no para el servidor de origen.TELista las codificaciones de transferencia aceptadas.Upgrade-Insecure-RequestsPide al servidor que convierta los enlaces http en https.X-Forwarded-ForLleva la IP original del cliente a través de proxies; no es estándar pero se usa mucho.X-Forwarded-ProtoIndica si la petición original llegó por http o https.X-Requested-WithUna convención antigua para marcar peticiones hechas por JavaScript.

Cabeceras de respuesta30

Cabeceras que añade el servidor al responder.

Access-Control-Allow-OriginIndica qué orígenes pueden leer esta respuesta: el núcleo de CORS.Access-Control-Allow-MethodsLista los métodos permitidos en peticiones de otro origen.Access-Control-Allow-HeadersLista las cabeceras permitidas en peticiones de otro origen.Access-Control-Allow-CredentialsDecide si las peticiones de otro origen pueden llevar cookies.Access-Control-Max-AgeIndica cuánto se puede cachear el resultado del preflight.AgeCuánto lleva la respuesta en la caché.AllowLista los métodos que admite la dirección; acompaña a un 405.Content-DispositionDecide si se muestra o se descarga, y lleva el nombre del archivo.Content-Security-PolicyControla de dónde pueden venir scripts e imágenes: la valla contra XSS.ETagUna huella de esta versión: si cambia el contenido, cambia la etiqueta y la caché lo nota.ExpiresMarca el momento tras el cual la respuesta se considera vieja.Last-ModifiedCuándo cambió por última vez; las peticiones condicionales lo comparan.LocationLa dirección a la que ir; acompaña a las redirecciones y al 201.Permissions-PolicyControla qué documentos pueden usar cámara, micrófono o ubicación.Referrer-PolicyDecide cuánta información de procedencia se envía.Retry-AfterIndica cuándo reintentar; acompaña a un 429 o un 503.ServerNombra el software del servidor; demasiado detalle da pistas a los atacantes.Set-CookieColoca una cookie en el navegador; añade HttpOnly y Secure para protegerla.Strict-Transport-SecurityIndica al navegador que use solo https en este sitio a partir de ahora.Timing-Allow-OriginPermite que otro origen lea las mediciones de rendimiento.VaryIndica qué cabeceras cambian la respuesta; la caché se guía por ella.WWW-AuthenticateIndica el esquema de autenticación; acompaña a un 401.X-Content-Type-OptionsImpide que el navegador adivine otro tipo de contenido.X-Frame-OptionsImpide que otros sitios inserten esta página en un marco.X-XSS-ProtectionActivaba un antiguo filtro XSS del navegador; hoy lo sustituye CSP.Cross-Origin-Opener-PolicyAísla el contexto para que otros orígenes no retengan la ventana.Cross-Origin-Resource-PolicyIndica qué orígenes pueden siquiera cargar este recurso.Cross-Origin-Embedder-PolicyExige que los recursos de otro origen den permiso explícito.Content-RangeIndica qué parte del total se envió; acompaña a un 206.Accept-RangesIndica si admite peticiones por rango; bytes significa que se puede reanudar.

En ambos sentidos13

Cabeceras que pueden aparecer en cualquiera de los dos lados.

Cómo leerlo

  • El primer dígito del código lleva el significado: 4 apunta a la petición, 5 al servidor.
  • 404 significa "no está"; 403, "está pero no para ti". Confundirlos alarga la depuración.
  • Los nombres de cabecera no distinguen mayúsculas: Content-Type y content-type son la misma.
  • Los problemas de caché y CORS suelen reducirse a una línea de cabecera, visible en la pestaña de red.

Preguntas frecuentes

Q. ¿En qué se diferencian 404 y 403?

404 dice que no hay nada en esa dirección; 403 dice que sí lo hay, pero no puedes verlo. Algunos servidores responden 404 a propósito para ocultar que el recurso existe.

Q. ¿Puedo hacer algo ante un 500?

Los códigos que empiezan por 5 son problema del servidor, así que suele quedar solo esperar. Un 502 o un 504 está entre dos servidores y a menudo se resuelve al reintentar poco después.

Q. ¿Cómo elijo entre 301 y 302?

Usa 301 cuando la dirección se movió definitivamente y 302 cuando es temporal. Ten en cuenta que navegadores y buscadores recuerdan un 301 mucho tiempo, y cuesta revertirlo.

Q. ¿Las cabeceras distinguen mayúsculas?

No. Content-Type y content-type son la misma, y desde HTTP/2 se envían en minúsculas por definición.

Q. ¿Por qué aparecen errores CORS?

Cuando una página intenta leer una respuesta de otro origen, el navegador la bloquea salvo que el servidor lo permita con Access-Control-Allow-Origin. El servidor sí respondió: es el navegador quien no entrega el cuerpo a tu código, de ahí que la pestaña de red muestre algo que tu script no puede leer.