http 1.1 clase 4 - curso front-end 2014 - open webinars
TRANSCRIPT
![Page 1: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/1.jpg)
HTTP 1.1Hypertext Transfer Protocol
OpenWebinarsCurso de front-end (2014)
Sergio Rus@sergiorus
![Page 2: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/2.jpg)
http://www.keepbrowsersafe.com
![Page 3: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/3.jpg)
● Protocolo de propósito general● Originalmente diseñado para hypermedia (HTML)● Modelo cliente-servidor● Stateless (no se guarda el estado)● Conexiones persistentes (HTTP 1.1)● API muy simple (métodos HTTP)
Principales características
![Page 4: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/4.jpg)
Protocolo de propósito general
HTTP fue originalmente diseñado para transmitir sólo documentos HTML. Posteriormente se amplió a otros tipos de datos (Internet media types, antes conocido como MIME types).
![Page 5: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/5.jpg)
Cliente-servidor
El cliente (navegador web, app del móvil, etc) siempre es el que inicia la comunicación enviando una petición HTTP (HTTP request) al servidor. Éste procesa la petición, genera una respuesta y la envía al cliente mediante una respuesta HTTP (HTTP response).
![Page 6: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/6.jpg)
http://slides.com/onema/http-protocol
HTTP request
HTTP request
HTTP request HTTP response
HTTP response
Cliente-servidor
![Page 7: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/7.jpg)
Petición (request)
Una petición es un mensaje que transmite el cliente al servidor con el propósito de acceder a un recurso alojado en éste. Un recurso es cualquier pieza de información que pueda ser identificada con una URI (URL o URN). Los recursos no tienen porqué identificar sólo datos almacenados en el servidor. Un recurso puede ser un concepto.
![Page 8: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/8.jpg)
Respuesta (response)
Es el mensaje que transmite el servidor al cliente en respuesta a su petición.
![Page 9: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/9.jpg)
Estructura de un mensaje HTTP
Tanto las peticiones como las respuestas tienen una estructura similar:
● Línea de estado● Encabezados● Opcionalmente, el cuerpo del mensaje (datos)
![Page 10: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/10.jpg)
Estructura de un petición HTTP
La línea de estado contiene: ● El método HTTP usado (GET)● La URI del recurso (/)● La versión del protocolo (HTTP 1.1)
En HTTP 1.1 es obligatorio incluir siempre la cabecera Host.
GET / HTTP 1.1Host: www.example.comAccept: text/html
![Page 11: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/11.jpg)
Estructura de un respuesta HTTP
La línea de estado contiene: ● La versión del protocolo (HTTP 1.1)● El código de respuesta (200)● Descripción del código (OK)
El resto serían cabeceras y el cuerpo.
HTTP/1.1 200 OKDate: Mon, 08 Dec 2014 19:04:39 GMTContent-Type: text/html
![Page 12: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/12.jpg)
Stateless
Una de las características más importantes de HTTP es que todas las peticiones (requests) son independientes: no se guardan datos (estado) entre una petición y otra, es decir, el servidor debe tratar cada petición de forma independiente. Es una de las claves para poder escalar la arquitectura de la red hasta el tamaño de Internet.
![Page 13: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/13.jpg)
Conexiones persistentes
HTTP es un protocolo de aplicación que requiere un protocolo de transporte para transmitir los datos. El protocolo de transporte (TCP, SPDY, etc) es el encargado de gestionar cada conexión: abrir conexión, transmitir datos, cerrar conexión.
El coste de abrir una nueva conexión es muy alto, tanto para el cliente como para el servidor.
![Page 14: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/14.jpg)
Conexiones persistentes
Gracias a las conexiones persistentes, característica añadida en la versión 1.1 de HTTP (versión actual), el cliente y el servidor pueden realizar varias peticiones HTTP reutilizando la misma conexión proporcionada por el protocolo de transporte. Aunque la conexión sólo se mantiene abierta por un tiempo limitado cuando deja de haber actividad.
![Page 15: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/15.jpg)
Conexiones persistentes
Aunque las conexiones persistentes permiten minimizar el número de conexiones requeridas, actualmente los navegadores pueden abrir de media hasta 6 conexiones simultáneas por host. El problema es que también existe un límite para el número total de conexiones simultáneas a lo largo de todos los hosts. La cifra varía mucho de un navegador a otro, pero se mueve entre 10 y 17.
![Page 16: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/16.jpg)
Conexiones persistentes
Conclusión: minimizar el número de conexiones totales tratando de reutilizar las conexiones ya abiertas (conexiones persistentes) y aprovechando la caché del navegador. ¡La conexión más rápida es aquella no efectuada!
![Page 17: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/17.jpg)
● GET: Obtener un recurso.● POST: Crear un recurso.● PUT: Actualizar o crear un recurso (si no existía).● DELETE: Eliminar un recurso.● OPTIONS: Información del servidor.● HEAD: Igual que GET, pero sólo obtiene cabeceras.
Métodos HTTP
Con ellos el cliente indica al servidor qué tipo de acción quiere realizar. Los más usados son:
![Page 18: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/18.jpg)
curl -v www.example.comcur -v -X HEAD www.example.comcurl -v -X OPTIONS www.example.com
Métodos HTTP
Veamos algunos ejemplos con cURL:
![Page 19: Http 1.1 clase 4 - curso front-end 2014 - open webinars](https://reader035.vdocuments.mx/reader035/viewer/2022071923/55d1df6ebb61ebb71e8b45fc/html5/thumbnails/19.jpg)
● 1xx Informational: Información provisional.● 2xx Success: La acción se realizó correctamente.● 3xx Redirection: El cliente debe realizar otra acción.● 4xx Client Error: Error en la petición del cliente.● 5xx Server Error: Error del servidor al procesar la petición.
Status codes
Los códigos de respuesta se pueden dividir en 5 categorías: