Códigos de Respuesta HTTP
Los códigos de respuesta HTTP son números que el servidor envía al cliente para indicar el resultado de una solicitud. Se sitúan en la primera línea de la respuesta y constan de tres dígitos. Según el valor, el cliente puede saber si la operación fue exitosa, si se necesita redirección o si hubo algún error.
Se dividen en cinco grandes categorías:
1xx - Informativos
Estos códigos indican que la solicitud se ha recibido y el proceso continúa.
- 100 Continue: El cliente puede seguir enviando el cuerpo de la solicitud. Se usa, por ejemplo, al subir archivos grandes.
- 101 Switching Protocols: El servidor acepta cambiar de protocolo, como pasar de HTTP a WebSocket. Poco común en el uso diario.
2xx - Éxito
Confirman que la solicitud fue procesada correctamente.
- 200 OK: La solicitud fue exitosa. El recurso se devuelve en el cuerpo de la respuesta. Es el más habitual.
- 201 Created: Se ha creado un nuevo recurso (por ejemplo, tras enviar un formulario con POST). Muy usado en APIs REST.
3xx - Redirección
El cliente debe realizar acciones adicionales, como seguir una nueva URL.
- 301 Moved Permanently: El recurso se ha movido a otra ubicación definitiva. Ideal para redirecciones SEO.
- 302 Found: El recurso se ha movido temporalmente. Útil en formularios de login o navegación temporal.
4xx - Errores del Cliente
Indican que el error proviene del lado del cliente, como una solicitud mal formada o un recurso inexistente.
- 400 Bad Request: La solicitud tiene errores de sintaxis o parámetros incorrectos.
- 404 Not Found: El recurso solicitado no existe. Clásico mensaje de “página no encontrada”.
- 418 I'm a teapot: Un código humorístico incluido en un RFC de 1998. El servidor declara que es una tetera y no puede preparar café. No tiene uso práctico, pero es un guiño divertido que algunos servidores conservan.
5xx - Errores del Servidor
Señalan que el problema ocurrió en el servidor al intentar procesar la solicitud.
- 500 Internal Server Error: Fallo genérico interno. Puede deberse a errores de configuración, scripts rotos, etc.
- 503 Service Unavailable: El servidor no está disponible temporalmente, por mantenimiento o alta carga.
Estos códigos no solo ayudan a mostrar el estado al usuario, sino que son esenciales para herramientas como curl
, navegadores, APIs, motores de búsqueda y sistemas de monitoreo.
Cómo visualizar códigos de respuesta
Usando curl
Puedes usar curl
desde la terminal para ver el código de estado HTTP que devuelve un servidor:
curl -I http://example.com
La opción -I realiza una solicitud HEAD, devolviendo solo los encabezados. Verás algo como:
HTTP/1.1 200 OK
Date: ...
Content-Type: text/html
...
Para ver todos los detalles de una solicitud completa:
curl -v http://example.com
El parámetro -v
muestra información completa del proceso, incluidos encabezados de solicitud y respuesta, muy útil para depurar.
Usando PHP
En PHP puedes inspeccionar el código de respuesta al realizar una solicitud remota, por ejemplo con file_get_contents()
y http_response_header
:
$response = file_get_contents('http://example.com');
print_r($http_response_header);
Esto mostrará algo como:
Array (
[0] => HTTP/1.1 200 OK
[1] => Content-Type: text/html
...
)
Si usas cURL desde PHP con curl_exec(), puedes obtener el código directamente:
$ch = curl_init('http://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "Código HTTP: " . $code;