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.
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.
Cabeceras de respuesta30
Cabeceras que añade el servidor al responder.
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.