- En una comunicación HTTP sólo existen dos tipos de mensajes, los de petición
(request) y los de respuesta (reply).
Capturado usando ethereal conectándose a www.google.es mediante mozilla.
Significado de algunas de las líneas:
- Los mensajes de petición están codificados en ASCII, comienzan siempre por
la cadena GET, la cadena POST o la cadena HEAD y acaban siempre en una
línea en blanco (retorno de carro y nueva línea).
- El número de líneas es variable, pero como mínimo siempre existe la primera
(línea de petición) donde se indica el tipo de petición (GET), la páqina HTML
reclamada (/directorio/pagina.html, aunque en el ejemplo se trata de la
página index.html que es la página por defecto) y la versión del protocolo
HTTP utilizado (HTTP/1.1).
- El resto de las líneas de cabecera.
- La primera línea, que comienza en el ejemplo por Host: especifica el
host en que reside el objeto (necesario para los proxies).
- La línea Connection: indica el tipo de conexión (keep-alive significa
conexión persistente y close conexión no persistente.
- La línea User-Agent: indica el navegador Web utilizado. Esto es
importante para el servidor porque dependiendo del navegador se pueden
enviar páginas HTML diferentes (con idéntica URL).
- La línea Accept-Language: indica que el usuario prefiere recibir una
versión en inglés del objeto.
- <Cuerpo de entidad> es un campo de los mensajes de petición que está vacío
cuando se utiliza el método GET, pero que sí se utiliza con el método POST. Este
método se emplea, por ejemplo, para rellenar formularios (donde el cliente debe
enviar información al servidor). Finalmente, el método HEAD es similar al
método GET, pero el servidor en su respuesta no va a incluir el objeto
pedido. Este método es normalmente utilizado por los desarrolladores de
aplicaciones.
- En la versión HTTP/1.1, además de GET, POST y HEAD, existen otros dos métodos:
PUT que permite a un usuario cargar un objeto en el servidor Web y DELETE que
permite borrarlo.
HTTP/1.1 200 OK |
Cache-control: private |
Content-Type: text/html |
Content-Encoding: gzip |
Server: GWS/2.1 |
Content-length: 1484 |
Date: Sat, 14 Feb 2004 10:52:44 GMT |
|
<Cuerpo de entidad> |
Significado de algunas de las líneas:
- Los mensajes de respuesta siempre tienen 3 secciones: la línea inicial de
estados, las lineas de cabecera y el cuerpo de la entidad.
- La línea inicial de estados tiene 3 campos: la versión del protocolo, el código de
estado y el estado (estas dos cosas significan lo mismo). En el ejemplo, 200 OK
significa que el servidor ha encontrado el objeto y que lo ha servido (en
el ejemplo no se muestra tal cual, se trata de un objeto comprimido).
En la siguiente tabla se presentan algunos de los códigos de control más
comunes:
|
|
Código | Significado |
|
|
200 OK | Petición exitosa |
301 Moved Permanently | El objeto demandado ha sido movido |
| a la URL especificada en Location: |
400 Bad Request | Petición no entendida por el servidor |
404 Not Found | Objeto no encontrado en el servidor |
505 HTTP Version Not
Supported | Obvio |
|
|
|
- Server: indica el software del servidor Web.
- Date: indica la fecha y hora en la que se creó y envió la respuesta HTTP.
Este campo es importante porque ayuda a los proxies a mantener sus
cachés.
- Content-length: indica el tamaño en bytes del objeto enviado.
- Content-Type: indica que el objeto enviado en el cuerpo de la entidad es texto
HTML.