Códigos HTTP en el examen TAI: las trampas más frecuentes (401, 403, 404...)
Las preguntas sobre códigos de estado HTTP y verbos REST son de las más frecuentes en la primera parte del examen TAI. Aquí tienes la tabla completa, las trampas clásicas del tribunal y cómo no caer en ellas.
Por qué los códigos HTTP caen siempre
Las preguntas sobre HTTP están en casi todas las convocatorias del Cuerpo de Técnicos Auxiliares de Informática: 2016, 2022, 2024 y 2026. Son fáciles de plantear, tienen respuesta inequívoca y el tribunal puede crear trampas finas distinguiendo dos códigos casi sinónimos. Es el caso clásico de pregunta "para castigar la duda".
La buena noticia: el corpus de códigos HTTP es finito y memorizable. Con la tabla y las trampas dominadas, son preguntas que se contestan en 10 segundos.
Las 5 familias de códigos HTTP
HTTP organiza los códigos de respuesta en cinco familias según el primer dígito. Conocer el significado de cada familia es lo primero que tienes que dominar.
| Familia | Significado | Ejemplo típico |
|---|---|---|
| 1xx | Informativo (la petición se está procesando) | 100 Continue, 101 Switching Protocols |
| 2xx | Éxito | 200 OK, 201 Created, 204 No Content |
| 3xx | Redirección | 301 Moved Permanently, 304 Not Modified |
| 4xx | Error del cliente | 400 Bad Request, 401, 403, 404 |
| 5xx | Error del servidor | 500 Internal Server Error, 502, 503 |
La trampa estrella: 401 vs 403
Es la pregunta más repetida del tribunal en el bloque de HTTP. Las dos parecen sinónimas pero significan cosas muy distintas:
401 Unauthorized — No estás autenticado
El servidor no sabe quién eres. Falta enviar credenciales válidas. Normalmente devuelve también un header WWW-Authenticate indicando el esquema (Basic, Bearer JWT). El navegador suele responder mostrando un cuadro de login.
403 Forbidden — No tienes permiso
El servidor sabe quién eres (estás autenticado) pero tu usuario no tiene permiso para acceder a este recurso. No tiene sentido pedirte que vuelvas a autenticarte porque ya lo estás.
Regla mnemotécnica: 401 → "ya autenticado" (te falta identificarte). 403 → "for(bidden) bidden" → "te conozco pero te tengo prohibido entrar aquí".
Otros códigos 4xx que tienes que conocer
- 400 Bad Request: la petición está mal formada. JSON inválido, parámetros faltantes, sintaxis incorrecta.
- 404 Not Found: el recurso solicitado no existe en el servidor. Puede ser una URL inexistente o un ID que no está en BD.
- 405 Method Not Allowed: el verbo HTTP (GET, POST, etc.) no está permitido para esta URL. Por ejemplo, hacer DELETE sobre una ruta solo de lectura.
- 408 Request Timeout: el cliente tardó demasiado en enviar la petición. No confundir con 504 (timeout del servidor intermedio).
- 409 Conflict: la petición entra en conflicto con el estado actual del recurso. Típico al actualizar versiones (optimistic locking).
- 413 Payload Too Large / Content Too Large: el cuerpo de la petición excede el tamaño permitido por el servidor.
- 414 URI Too Long: la URL es demasiado larga. Típico cuando se mete JSON en GET con muchos parámetros.
- 429 Too Many Requests: el cliente ha hecho demasiadas peticiones en poco tiempo (rate limiting).
Códigos 5xx: errores del servidor
- 500 Internal Server Error: error genérico del servidor. No da más detalles. El más común cuando una excepción no controlada explota en el backend.
- 501 Not Implemented: el servidor no soporta el método pedido. Diferente a 405 (que sí soporta el método pero no para ese recurso).
- 502 Bad Gateway: el servidor actúa como proxy/gateway y recibió respuesta inválida del backend al que reenvió.
- 503 Service Unavailable: el servidor está temporalmente no disponible (mantenimiento o sobrecarga).
- 504 Gateway Timeout: el servidor proxy/gateway no recibió respuesta del backend a tiempo.
Códigos 3xx: redirecciones
- 301 Moved Permanently: redirección permanente. Los buscadores actualizan su índice. SEO transfiere casi 100% del link juice.
- 302 Found: redirección temporal. El recurso está en otra URL ahora, pero podría volver.
- 303 See Other: redirige al cliente a una URL distinta usando GET. Típico después de un POST exitoso (patrón POST/Redirect/GET).
- 304 Not Modified: usado con cachés. El recurso no ha cambiado, el cliente puede usar su versión local. Trampa típica del tribunal junto a If-None-Match.
- 307 Temporary Redirect: como 302 pero garantiza que el método HTTP no cambia (sigue siendo POST si era POST).
- 308 Permanent Redirect: como 301 pero garantiza método HTTP (similar diferencia entre 307 y 302).
Verbos HTTP: seguros vs idempotentes
Otra trampa clásica del tribunal. Las dos propiedades son distintas y se pueden combinar de las cuatro formas posibles:
| Concepto | Significado |
|---|---|
| Seguro | No modifica el estado del servidor. Es solo lectura. |
| Idempotente | Ejecutarlo 1 o N veces produce el mismo resultado final. |
| Verbo | Función | ¿Seguro? | ¿Idempotente? |
|---|---|---|---|
| GET | Leer recurso | SÍ | SÍ |
| HEAD | Leer solo cabeceras | SÍ | SÍ |
| OPTIONS | Preguntar qué métodos acepta una URL (CORS preflight) | SÍ | SÍ |
| PUT | Reemplazar recurso completo | NO | SÍ |
| DELETE | Eliminar recurso | NO | SÍ |
| POST | Crear recurso (o acción genérica) | NO | NO |
| PATCH | Modificación parcial | NO | NO (depende implementación) |
| CONNECT | Túnel HTTPS a través de proxy | NO | NO |
| TRACE | Eco de la petición (riesgo XST) | SÍ | SÍ |
Trampa frecuente del tribunal: POST es el único verbo común no idempotente. Llamar POST 5 veces a /api/usuarios crea 5 usuarios distintos. Llamar DELETE 5 veces a /api/usuarios/123 el resultado es el mismo: usuario 123 borrado (los DELETE siguientes pueden devolver 404, pero el estado final es idéntico). Por eso DELETE es idempotente pero no seguro.
HTTP/1.1, HTTP/2 y HTTP/3
El tribunal pregunta sobre estas versiones también. Las diferencias claves a recordar:
- HTTP/1.1: texto plano, conexiones persistentes (keep-alive), pipelining limitado, head-of-line blocking.
- HTTP/2: binario, multiplexing (varias peticiones en una conexión sin head-of-line a nivel HTTP), compresión de cabeceras HPACK, server push.
- HTTP/3: sobre QUIC (UDP en lugar de TCP), integra TLS 1.3 en el handshake, elimina head-of-line blocking a nivel de transporte, compresión de cabeceras QPACK.
Headers HTTP importantes para el examen
| Header | Tipo | Función |
|---|---|---|
Authorization | Request | Credenciales (Basic, Bearer JWT) |
Content-Type | Both | Tipo MIME del cuerpo (application/json, text/html...) |
Accept | Request | Tipos MIME que el cliente acepta como respuesta |
Host | Request | Obligatorio en HTTP/1.1: dominio destino |
Cache-Control | Both | max-age, no-cache, no-store, public, private |
Set-Cookie | Response | Establece cookie. Flags: HttpOnly, Secure, SameSite |
Strict-Transport-Security | Response | HSTS: fuerza HTTPS en futuras conexiones |
Content-Security-Policy | Response | CSP: previene XSS especificando orígenes permitidos |
X-Frame-Options | Response | Previene clickjacking (DENY, SAMEORIGIN) |
ETag + If-None-Match | Both | Validación condicional para caché (304 Not Modified) |
Top 10 trampas del tribunal con HTTP
- 401 vs 403: el tribunal lo pone en TODOS los exámenes en algún momento.
- POST no es idempotente: pero PUT y DELETE sí lo son.
- HEAD es seguro e idempotente: no devuelve cuerpo, solo cabeceras.
- OPTIONS se usa para CORS preflight: trampa de "qué método pregunta los métodos permitidos".
- 301 vs 302: permanente vs temporal. Cuidado con confundir.
- 304 Not Modified: NO es un error, es éxito desde el punto de vista del cliente (usa caché).
- 413 vs 414: cuerpo grande vs URI larga.
- 502 vs 504: el primero es respuesta inválida del backend, el segundo es timeout del backend.
- 500 es genérico: "algo explotó en el servidor". Cualquier excepción no controlada típicamente.
- HTTP/2 usa HPACK, HTTP/3 usa QPACK: compresión de cabeceras distinta.
Practica con preguntas reales del examen TAI
Dentro de MIMIR tienes preguntas sobre códigos HTTP, verbos REST y headers de las convocatorias 2016, 2022, 2024 y 2026 (con plantilla INAP). Además de la chuleta interactiva de códigos HTTP y simulacros tipo examen.
Probar MIMIR gratis