Tip:
Highlight text to annotate it
X
Tenemos la línea de estado básica de la respuesta
y, como en la petición, le sigue una serie de encabezados.
Unos cuantos ejemplos.
Estos son los encabezados que suelen incluirse
en respuestas HTTP.
Al igual que en la petición de cliente,
los encabezados no son siempre los mismos.
Algunos se requieren,
es decir, normalmente están ahí,
pero la web ha evolucionado con el tiempo
y muchos de los encabezados que
se requieren a menudo no están o todo funciona sin ellos.
Date siempre está aquí, es la fecha de la petición.
Hasta aquí nada nuevo.
Server es similar al encabezado de agente de usuario en la petición.
El nombre y el número de la versión del servidor que procesa la respuesta.
Yo nunca incluiría esto. O si lo incluyo, me lo invento.
Porque si no, le estás dando información gratis
a un posible hacker sobre tus vulnerabilidades.
Content-Type es muy conocido. Es el tipo de documento que se devuelve.
Así, el navegador sabe cómo mostrarlo.
texto/html es habitual, evidentemente, sería una página en HTML.
Si se tratara de una imagen, verías imagen/png" o "imagen/gif,
ese tipo de cosas.
Y Content-Lenght indica lo largo que es el documento.
Se incluye a menudo pero no se requiere necesariamente,
porque el navegador sabe cuándo ha dejado de recibir datos el documento,
porque la conexión se cierra.
Hay otras formas de indicar
al navegador que se ha dejado de enviar datos,
pero no es de suma importancia ahora mismo.
Ya hemos hablado de peticiones y respuestas básicas,
vamos ahora a trabajar con el terminal,
a practicar un poco con esto.
Abre el terminal.
Si tienes problemas para encontrarlo en la computadora,
hay notas de clase que explican cómo hacerlo.
Para los usuarios de Windows esto puede suponer un reto.
Estamos en el terminal y vamos a usar
un programa llamado Telnet para realizar
peticiones de Internet a servidores web y veremos el HTTP,
así lo ponemos en práctica.
Hagamos una petición
Voy a hacer una petición a Udacity.com, puerto 80.
Esta es la petición que haría tu navegador
si cargaras Udacity.com en él.
Se conectaría a Udacity.com, puerto 80.
Si te acuerdas, 80 es el puerto por defecto.
Le doy a enter, nos conectamos,
y voy a enviar la línea de petición
de la que hablábamos antes.
Voy a enviar un HTTP/1.0
explicaré el porqué en un momento.
Incluiré el encabezado Host.
Google lo quiere porque, como dijimos antes,
aloja diferentes servidores web en esa máquina.
Nos desplazamos al principio.
Puedes ver la petición:
GET/HTTP/1.0 Host: Udacity.com
¿Por qué puse 1.0?
Porque la acción por defecto en 1.1 es que
el servidor no cierra la conexión
y permite al navegador realizar peticiones múltiples para varias cosas.
Es una optimización,
pero cuando se hacen pruebas manualmente,
significa que la conexión está abierta
y hay que cerrarla en tu computadora,
lo cual es un poco engorroso a veces cuando se está usando Telnet.
Aquí vemos la petición:
1.0 Host: Udacity.com
y aquí vemos la respuesta del servidor.
Aquí está la línea de estado: HTTP/1.0 200 OK.
Significa que funcionó. Y aquí vemos una serie de encabezados.
Algunos ya los tratamos antes.
Aquí tenemos Date, Server, que es Google Frontend,
Content-Type: text/html,
lo que significa que estamos recibiendo HTML,
Si vamos hacia abajo, siguiendo la línea de estado
en los encabezados, vemos el documento de respuesta.
Y esto es HTML, como en lo que trabajamos antes.
Es difícil, pero os hacéis una idea: muchos HTML.