HTTP: respuestas

Después de recibir e interpretar un mensaje de solicitud, un servidor responde con un mensaje de respuesta HTTP:


     
  • A Status-line
  • Zero or more header (General|Response|Entity) fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

Las siguientes secciones explican cada una de las entidades utilizadas en un mensaje de respuesta HTTP.

Línea de estado del mensaje

Una línea de estado consta de la versión del protocolo seguida de un código de estado numérico y su frase textual asociada. Los elementos están separados por caracteres SP de espacio.

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

Versión HTTP

Un servidor que admita HTTP versión 1.1 devolverá la siguiente información de versión:

HTTP-Version = HTTP/1.1

Código de estado

El elemento Status-Code es un número entero de 3 dígitos donde el primer dígito del Status-Code define la clase de respuesta y los dos últimos dígitos no tienen ningún rol de categorización. Hay 5 valores para el primer dígito:

SN Código y descripción
1 1xx: Informational

Significa que se recibió la solicitud y el proceso continúa.

2 2xx: Success

Significa que la acción se recibió, comprendió y aceptó con éxito.

3 3xx: Redirection

Significa que se deben tomar más medidas para completar la solicitud.

4 4xx: Client Error

Significa que la solicitud contiene una sintaxis incorrecta o que no se puede cumplir.

5 5xx: Server Error

Significa que el servidor no cumplió con una solicitud aparentemente válida.

Los códigos de estado HTTP son extensibles y no se requieren aplicaciones HTTP para comprender el significado de todos los códigos de estado registrados. En un capítulo separado se proporciona una lista de todos los códigos de estado para su referencia.

Campos de encabezado de respuesta

Estudiaremos General-header y Entity-header en un capítulo separado cuando aprendamos los campos de encabezado HTTP. Por ahora, verifiquemos qué son los campos de encabezado de respuesta.

Los campos de encabezado de respuesta permiten al servidor pasar información adicional sobre la respuesta que no se puede colocar en la línea de estado. Estos campos de encabezado brindan información sobre el servidor y sobre el acceso adicional al recurso identificado por el Request-URI.

  • Accept-Ranges

  • Age

  • ETag

  • Location

  • Proxy-Authenticate

  • Retry-After

  • Server

  • Vary

  • WWW-Authenticate

Puede introducir sus campos personalizados en caso de que vaya a escribir su propio servidor y cliente web personalizado.

Ejemplos de mensaje de respuesta

Ahora pongámoslo todo junto para formar una respuesta HTTP para una solicitud para obtener el hello.htm página desde el servidor web que se ejecuta en tutorialspoint.com

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

El siguiente ejemplo muestra un mensaje de respuesta HTTP que muestra una condición de error cuando el servidor web no pudo encontrar la página solicitada:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

A continuación se muestra un ejemplo de mensaje de respuesta HTTP que muestra una condición de error cuando el servidor web encontró una versión HTTP incorrecta en la solicitud HTTP dada:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>