¿Qué es una respuesta HTTP? Guía de códigos de estado de respuesta HTTP

Publicado 26 de enero de 2026

Las respuestas HTTP son una parte importante de la comunicación web, permitiendo a los servidores responder a las solicitudes de los clientes con los datos solicitados, información de estado y otros detalles clave. Este artículo explicará la estructura y partes de una respuesta HTTP, incluyendo la línea de estado, los encabezados y el cuerpo. Veremos los diferentes grupos de códigos de estado HTTP y sus significados, con ejemplos reales para mostrar cómo se usan. También hablaremos sobre buenas prácticas para manejar respuestas HTTP en el desarrollo web, tanto del lado del cliente como del servidor, para asegurar que clientes y servidores puedan comunicarse bien.

Puntos Clave

  • Una respuesta HTTP es el mensaje que un servidor web envía de vuelta a un cliente después de recibir y procesar una solicitud HTTP.
  • Los componentes clave de una respuesta HTTP incluyen la línea de estado, los encabezados y un cuerpo opcional que contiene el contenido solicitado.
  • Los códigos de estado HTTP se categorizan en respuestas informativas (1xx), respuestas exitosas (2xx), mensajes de redirección (3xx), respuestas de error del cliente (4xx) y respuestas de error del servidor (5xx).
  • Del lado del cliente, es fundamental verificar los códigos de estado, procesar los datos de respuesta según el encabezado Content-Type, y manejar redirecciones y errores de manera apropiada.
  • Del lado del servidor, establecer los códigos de estado y encabezados correctos, proporcionar mensajes de error claros, e implementar un manejo y registro de errores adecuado son esenciales para un desarrollo web efectivo.

¿Qué Es una Respuesta HTTP?

Una respuesta HTTP es el mensaje que un servidor web envía de vuelta a un cliente después de recibir y procesar una solicitud HTTP. Entrega el resultado de la solicitud del cliente, ya sea que ese resultado sea un éxito, un fallo o algo intermedio. La respuesta incluye información de estado sobre la solicitud y también puede tener contenido en su cuerpo, como el recurso solicitado (una página web, imagen, datos JSON, etc.), o un mensaje de error.

Las respuestas HTTP son necesarias para que un cliente entienda si su solicitud fue exitosa o no y cuál fue el resultado de esa solicitud. Los navegadores web usan respuestas HTTP para saber qué contenido mostrar a los usuarios. Las APIs usan respuestas HTTP para indicar el resultado de las operaciones y para enviar datos de vuelta. La estructura y el contenido de la respuesta HTTP determinan cómo procede el cliente.

Componentes de una Respuesta HTTP

Una respuesta HTTP consta de varios componentes clave:

  1. Línea de Estado: La primera línea de la respuesta, que incluye la versión HTTP, un código de estado y un mensaje de estado.
  2. Encabezados: Pares clave-valor que proporcionan información adicional sobre la respuesta, como el tipo de contenido, longitud del contenido, directivas de caché y más.
  3. Cuerpo (opcional): El contenido real de la respuesta, como HTML, JSON, una imagen, etc.

Aquí hay un ejemplo de una respuesta HTTP simple:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<!DOCTYPE html>
<html>
  <head>
    <title>Example Page</title>
  </head>
  <body>
    <h1>Hello, World!</h1>
    <p>This is an example page.</p>
  </body>
</html>

Ejemplos de la Vida Real

  1. Navegación Web: Cuando ingresas una URL en tu navegador web, este envía una solicitud HTTP al servidor. El servidor luego responde con una respuesta HTTP que incluye el contenido HTML de la página web. Tu navegador usa esta respuesta para mostrar la página.

  2. Interacción con API: Cuando una aplicación hace una solicitud a un endpoint de API, el servidor API responde con una respuesta HTTP. Esta respuesta a menudo incluye datos JSON que la aplicación puede usar. Por ejemplo, una aplicación del clima podría hacer una solicitud a una API del clima y recibir datos del clima actual en la respuesta.

  3. Descarga de Archivos: Cuando haces clic en un enlace para descargar un archivo, tu navegador envía una solicitud HTTP al servidor. El servidor responde con una respuesta HTTP que incluye los datos del archivo en el cuerpo y encabezados que indican el tipo y tamaño del archivo.

Componentes de una Respuesta HTTP

Una respuesta HTTP tiene varias partes clave que proporcionan información sobre el resultado de la solicitud y entregan los datos solicitados.

Línea de Estado

La línea de estado es la primera línea de la respuesta HTTP. Incluye:

  • Versión HTTP: Muestra la versión del protocolo HTTP utilizada, como HTTP/1.1 o HTTP/2.
  • Código de Estado: Un número de tres dígitos que indica el resultado de la solicitud, como 200 para éxito, 404 para "no encontrado", o 500 para un error del servidor.
  • Texto de Estado: Una breve descripción del código de estado, como "OK" para 200, "Not Found" para 404, o "Internal Server Error" para 500.

Aquí hay algunos códigos de estado HTTP comunes y sus significados:

Código de Estado Texto de Estado Significado
200 OK La solicitud fue exitosa y el cuerpo de la respuesta contiene los datos.
201 Created La solicitud fue exitosa y se creó un nuevo recurso.
301 Moved Permanently El recurso solicitado se ha movido permanentemente a una nueva URL.
400 Bad Request El servidor no pudo entender la solicitud debido a sintaxis inválida.
401 Unauthorized La solicitud requiere autenticación del usuario.
404 Not Found El servidor no pudo encontrar el recurso solicitado.
500 Internal Server Error El servidor encontró un error inesperado.

El código de estado HTTP es parte del mensaje de respuesta. Define la clase de respuesta y juega un rol de categorización. El primer dígito del código de estado indica el tipo de respuesta:

  • 1xx: Respuesta informativa
  • 2xx: Éxito
  • 3xx: Redirección
  • 4xx: Error del cliente
  • 5xx: Error del servidor

Los códigos de estado HTTP son extensibles, pero las aplicaciones HTTP no están obligadas a entender el significado de todos los códigos de estado registrados. Información adicional sobre la respuesta se puede encontrar en los campos de encabezado de la respuesta.

Encabezados de Respuesta

Después de la línea de estado están los encabezados de respuesta. Estos son pares clave-valor que dan más detalles sobre la respuesta. Algunos encabezados comunes incluyen:

  • Server: El tipo de servidor que generó la respuesta, como "Apache/2.4.41 (Ubuntu)".
  • Content-Type: El tipo MIME de los datos en el cuerpo de la respuesta, como "text/html" para HTML o "application/json" para JSON.
  • Content-Length: El tamaño del cuerpo de la respuesta en bytes.
  • Cache-Control: Directivas para mecanismos de caché, especificando si la respuesta puede ser almacenada en caché, por cuánto tiempo, etc. Por ejemplo, "max-age=3600" significa que la respuesta puede ser almacenada en caché por una hora.
  • Set-Cookie: Envía cookies del servidor al cliente, como "session_id=abc123; Expires=Wed, 21 Jun 2023 07:28:00 GMT".

Línea en Blanco

Después de los encabezados, hay una línea en blanco. Esta línea vacía señala el final de la sección de encabezados de la respuesta.

Cuerpo de la Respuesta

Después de la línea en blanco está el cuerpo de la respuesta. Este contiene los datos reales que fueron solicitados, como:

  • Un archivo HTML para una página web:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Example Page</title>
      </head>
      <body>
        <h1>Welcome to the Example Page</h1>
        <p>This is an example of an HTML response body.</p>
      </body>
    </html>
    
  • Datos JSON para una respuesta de API:

    {
      "name": "John Doe",
      "age": 30,
      "city": "New York"
    }
    
  • Una imagen, video u otro archivo multimedia.

  • Un archivo para descargar, como un PDF o archivo ZIP.

Si la respuesta indica un error, como un código de estado 404 o 500, el cuerpo podría contener un mensaje de error proporcionando más detalles sobre el problema, como:

<!DOCTYPE html>
<html>
  <head>
    <title>404 Not Found</title>
  </head>
  <body>
    <h1>404 Not Found</h1>
    <p>The requested resource could not be found on this server.</p>
  </body>
</html>

El cuerpo de la respuesta es opcional. Para algunas solicitudes, como una solicitud HEAD o una respuesta 204 "No Content", no habrá cuerpo.

Categorías de Códigos de Estado de Respuesta HTTP

Los códigos de estado de respuesta HTTP se dividen en cinco categorías basadas en su primer dígito. Cada categoría representa una clase diferente de respuestas.

Respuestas informativas (100-199)

Los códigos de estado en el rango 100-199 significan que el servidor ha recibido la solicitud y la está procesando. Estos códigos son respuestas. Algunos códigos de estado informativos comunes incluyen:

Código de Estado Descripción
100 Continue El servidor ha recibido los encabezados de la solicitud y el cliente debe enviar el cuerpo de la solicitud.
102 Processing El servidor ha recibido y está procesando la solicitud, pero aún no hay respuesta disponible.

Ejemplo de escenario:

  • Un cliente envía una solicitud POST con una carga útil grande. El servidor responde con un código de estado 100 Continue para indicar al cliente que envíe el cuerpo de la solicitud.

Respuestas exitosas (200-299)

Los códigos de estado en el rango 200-299 significan que el servidor recibió, entendió y aceptó la solicitud. Algunos códigos de estado exitosos comunes incluyen:

Código de Estado Descripción
200 OK La solicitud ha tenido éxito y el cuerpo de la respuesta tiene los datos solicitados..
201 Created La solicitud ha tenido éxito y se ha creado un nuevo recurso. Esto se usa comúnmente como respuesta a una solicitud POST.
204 No Content El servidor ha cumplido con la solicitud pero no necesita devolver ningún contenido.

Ejemplos de escenarios:

  • Un cliente solicita una página web usando una solicitud GET. El servidor responde con un código de estado 200 OK y devuelve el contenido HTML.
  • Un cliente envía un formulario para crear un nuevo recurso usando una solicitud POST. El servidor crea el recurso y responde con un código de estado 201 Created.
  • Un cliente envía una solicitud DELETE para eliminar un recurso. El servidor elimina el recurso y responde con un código de estado 204 No Content.

Mensajes de redirección (300-399)

Los códigos de estado en el rango 300-399 significan que el cliente necesita realizar más acciones para completar la solicitud. La acción puede ser realizada por el agente de usuario sin interacción con el usuario. Algunos códigos de estado de redirección comunes incluyen:

Código de Estado Descripción
301 Moved Permanently El recurso solicitado se le ha asignado un nuevo URI permanente y las referencias futuras deben usar uno de los URIs devueltos.
302 Found El recurso solicitado está bajo un URI diferente. El cliente debe continuar usando el Request-URI para solicitudes futuras.
304 Not Modified El recurso no ha sido modificado desde la versión especificada por los encabezados de la solicitud, por lo que el cliente puede continuar usando la versión en caché.

Ejemplos de escenarios:

  • Un cliente solicita un recurso que se ha movido permanentemente a una nueva URL. El servidor responde con un código de estado 301 Moved Permanently e incluye la nueva URL en el encabezado Location.
  • Un cliente solicita un recurso que está bajo una URL diferente. El servidor responde con un código de estado 302 Found e incluye la URL temporal en el encabezado Location.
  • Un cliente envía una solicitud GET condicional con el encabezado If-Modified-Since. Si el recurso no ha sido modificado desde la fecha especificada, el servidor responde con un código de estado 304 Not Modified.

Respuestas de error del cliente (400-499)

Los códigos de estado en el rango 400-499 significan que el cliente parece haber cometido un error. Excepto cuando se responde a una solicitud HEAD, el servidor debe incluir una entidad explicando el error. Algunos códigos de estado de error del cliente comunes incluyen:

Código de Estado Descripción
400 Bad Request El servidor no pudo entender la solicitud debido a una sintaxis incorrecta.
401 Unauthorized La solicitud requiere autenticación del usuario.
404 Not Found El servidor no ha encontrado nada que coincida con el Request-URI.

Ejemplos de escenarios:

  • Un cliente envía una solicitud con parámetros inválidos o faltantes. El servidor responde con un código de estado 400 Bad Request e incluye un mensaje de error en el cuerpo de la respuesta.
  • Un cliente intenta acceder a un recurso protegido sin proporcionar autenticación válida. El servidor responde con un código de estado 401 Unauthorized y solicita al cliente que se autentique.
  • Un cliente solicita un recurso que no existe en el servidor. El servidor responde con un código de estado 404 Not Found.

Respuestas de error del servidor (500-599)

Los códigos de estado en el rango 500-599 significan que el servidor sabe que ha cometido un error o no puede realizar la solicitud. Excepto cuando se responde a una solicitud HEAD, el servidor debe incluir una entidad explicando el error, y si es una condición temporal o permanente. Algunos códigos de estado de error del servidor comunes incluyen:

Código de Estado Descripción
500 Internal Server Error El servidor encontró una condición inesperada que le impidió cumplir con la solicitud.
503 Service Unavailable El servidor actualmente no puede manejar la solicitud debido a una sobrecarga temporal o mantenimiento del servidor.
504 Gateway Timeout El servidor, mientras actuaba como gateway o proxy, no recibió una respuesta oportuna del servidor upstream que necesitaba acceder para completar la solicitud.

Ejemplos de escenarios:

  • Un cliente solicita un recurso, pero ocurre un error inesperado del lado del servidor. El servidor responde con un código de estado 500 Internal Server Error y registra el error para investigación.
  • Un cliente intenta acceder a un servicio que está temporalmente fuera de servicio por mantenimiento. El servidor responde con un código de estado 503 Service Unavailable y puede incluir un encabezado Retry-After para indicar cuándo se espera que el servicio esté disponible nuevamente.
  • Un cliente solicita un recurso que requiere que el servidor se comunique con un servidor upstream. Si el servidor upstream tarda demasiado en responder, el servidor envía un código de estado 504 Gateway Timeout al cliente.

Para más información sobre códigos de estado HTTP, puedes consultar los siguientes recursos:

Manejo de Respuestas HTTP en el Desarrollo Web

Al crear aplicaciones web, necesitas manejar las respuestas HTTP correctamente tanto del lado del cliente como del servidor. Esto ayuda a crear una buena experiencia de usuario y ayuda con la depuración y el mantenimiento de la aplicación.

Lado del Cliente

Del lado del cliente, como en un navegador web o una aplicación móvil, necesitas:

  1. Verificar los códigos de estado: Después de enviar una solicitud HTTP, el cliente debe verificar el código de estado HTTP de la respuesta para ver si la solicitud funcionó o no. Por ejemplo:

    Código de Estado Significado
    200 OK Éxito
    404 Recurso solicitado no encontrado
  2. Procesar los datos de respuesta: Basándose en el código de estado y el campo de encabezado Content-Type, el cliente necesita procesar el cuerpo de la respuesta de manera correcta. Por ejemplo:

    Content-Type Acción
    HTML El navegador lo mostrará
    JSON Analizar en un objeto para uso posterior
  3. Manejar redirecciones y errores: Si el código de estado significa una redirección (códigos 3xx), el cliente debe seguir la nueva URL en el encabezado Location. Para códigos de error del cliente (4xx) y error del servidor (5xx), el cliente debe mostrar mensajes de error al usuario y tal vez reintentar la solicitud o pedirle al usuario que haga algo.

Ejemplo de manejo de un mensaje de respuesta HTTP en JavaScript usando la Fetch API:

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
    // Procesar los datos
  })
  .catch(error => {
    console.error('Error:', error);
    // Manejar el error
  });

Lado del Servidor

Del lado del servidor, necesitas:

  1. Establecer los códigos de estado y encabezados correctos: Al enviar una respuesta, el servidor web debe establecer el código de estado HTTP correcto para mostrar el resultado del procesamiento de la solicitud. También debe incluir campos de encabezado de respuesta, como Content-Type, para ayudar al cliente a entender la respuesta correctamente.

  2. Proporcionar mensajes de error claros: Para respuestas de error del cliente y del servidor, el servidor debe incluir un mensaje de error claro y breve en el cuerpo de la respuesta. Esto ayuda a los desarrolladores a saber qué salió mal y cómo solucionarlo.

  3. Implementar un buen manejo y registro de errores: En el servidor, es importante capturar y manejar errores bien. Esto significa registrar errores para análisis y depuración posterior, y no mostrar datos sensibles en mensajes de error enviados al cliente.

Ejemplo de envío de una respuesta HTTP en Node.js usando Express:

app.get('/data', (req, res) => {
  try {
    const data = getDataFromDatabase();
    res.status(200).json(data);
  } catch (error) {
    console.error('Error:', error);
    res.status(500).json({ error: 'Internal Server Error' });
  }
});