Fundamentos básicos de Ajax (I): peticiones y respuestas HTTP

Como sabemos, la fuerza impulsora de Ajax es la interacción entre el cliente (navegador Web) y el servidor, por lo que la base para conocer bien las técnicas Ajax es el protocolo HTTP. Es decir, vamos a conocer bien cómo viajan la petición y la respuesta cuando escribimos cualquier dirección URL. El navegador envía al servidor la solicitud y éste le devuelve una respuesta que el navegador interpretará y así mostrará los resultados al usuario. El formato de las peticiones HTTP es:

línea-petición
cabeceras
línea en blanco
[cuerpo-petición]

línea-petición : TIPO de solicitud, RECURSO al que queremos acceder y VERSIÓN HTTP
cabeceras contienen información adicional que usará el servidor
línea en blanco , a modo de separador
cuerpo-petición, datos adicionales opcionales

Aunque hay muchos tipos de peticiones básicamente nos interesarán dos: GET y POST. Por ejemplo cada vez que tecleamos una dirección en internet el navegador envía una solicitud GET al servidor web. Aquí un ejemplo:

GET   /   HTTP/1.1
Host : www.westernunion.es
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
                    Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive

El tipo de solicitud es GET, el recurso al que queremos acceder está en el raíz del dominio (indicado por la barra /), y la versión HTTP es la 1,1. La petición se envía al Host indicado en la segunda línea, combinado con la barra indicada en el ejemplo. La tercera línea indica la cabecera User-Agent, que es la base de la lógica para detectar el navegador. La última línea sirve para establecer distintas operaciones de navegación. Una solicitud a una página dentro del dominio www.westernunion.es/agentes sería idéntica a la del ejemplo y simplemente tras el GET aparecería /agentes

Los parámetros que se pasan a la página en la solicitud viajan con el formato URL?nombre1=valor1&nombre2=valor2&... ¡ojo que los espacios en blanco se sustituyen por %20! Como vemos los pares variables y valor van separados por ampersand (&).

Las solicitudes POST tienen un formato muy similar, aunque como proporcionan información adicional al servidor necesitan más líneas. Aquí un ejemplo:

POST   /   HTTP/1.1
Host : www.westernunion.es
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
                   Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive

La cabecera Content-Type indica cómo está codificado el cuerpo de la petición: el valor indicado en el ejemplo es el tipo MIME para una codificación URL sencilla. Por último, la cabecera Content-Length indica la longitud en bytes del cuerpo de la petición.

Veamos ahora el formato de la respuestas HTTP, que es prácticamente el mismo que el de una petición, salvo que contendrá información del estado:

línea-estado
cabeceras
línea en blanco
[cuerpo-respuesta]

Un ejemplo sencillo podría ser:

HTTP/1.1   200   OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html, charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Western Union</title>
</head>
<body>
.............
</body>
</html>

El estado 200 OK significa que el recurso fue encontrado y todo va bien, aunque podría haber sido cualquier otro indicando algún error: 404 NOT FOUND (recurso no localizado), 401 UNAUTHORIZED (fallo de autenticación al acceder al recurso), etc. En el cuerpo de la respuesta viaja el código HTML de la página solicitada para que el navegador pueda interpretarla y mostrarla. Y ésto es todo por ahora, en próximos posts iremos profundizando en las técnicas de comunicación Ajax, patrones, etc, ¡Nos vemos!

No hay comentarios :

Publicar un comentario

Buscar en el Blog: