HTTP
Respuestas
Las respuestas HTTP tienen un formato similar al de las peticiones, y están compuestas por: línea de estado (HTTP/{version} {código} {descripción}), cabeceras y cuerpo. Los códigos de estado se agrupan en 5 categorías: 1xx informativo, 2xx éxito, 3xx redirección, 4xx error del cliente y 5xx error del servidor.
-
Un ejemplo de respuesta
1xxse produce cuando se negocia el protocolo de comunicación con el servidor (como vimos en HTTP/2 o en el caso de WebSockets1). Usa estetelnetpara hacer la siguiente petición:telnet demo.piesocket.com 80GET /v3/channel_123 HTTP/1.1 Host: demo.piesocket.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13 -
La respuesta
2xxmás común es200 OKque suele venir acompañada de un cuerpo. Éste se envía de manera similar al visto en unPOSTy va acompañado de las mismas cabeceras. Usa estetelnetpara hacer las siguientes peticiones:telnet httpbin.org 80GET /image/png HTTP/1.0GET /gzip HTTP/1.0❓ Pregunta: Si tuvieras que implementar un navegador web ¿qué cabeceras HTTP de la respuesta mirarías para saber interpretar y procesar cada uno de los cuerpos de las respuestas anteriores?
-
Un caso de típico de redirección
3xxsucede cuando se navega a una web usandohttppara redirigir ahttps. Usa estetelnetpara hacer la siguiente petición:telnet github.com 80HEAD / HTTP/1.1 Host: github.com❓ Pregunta: En la respuesta anterior, ¿a qué URL se indica al cliente que se redirija? Razona por qué en este caso de uso es lógico que sea redirección permanente, y no temporal.
-
Los errores
4xxcorresponden a peticiones incorrectas, y normalmente repetirlas no va a hacer que funcione . El ejemplo típico es cuando se solicita un recurso inexistente:404 Not Found. Otro ejemplo ocurre cuando una web solicita credenciales para acceder. Usa estetelnetpara hacer las siguientes peticiones:telnet httpbin.org 80GET /basic-auth/user/pass HTTP/1.0GET /basic-auth/user/pass HTTP/1.0 Authorization: Basic dXNlcjpwYXNz❓ Pregunta: La autenticacion básica no cifra el usuario y password de manera segura2. Para asegurar que no se comprometen ¿qué otra cosa deberíamos usar con este tipo de autenticación?
-
Los errores
5xxcorresponden a problemas en el servidor, como servidor sobrecargado o errores de implementación del servicio. Usa estetelnetpara hacer la siguiente petición:telnet httpbin.org 80GET /delay/invalid HTTP/1.0
WebSocket es otro protocolo de comunicación al nivel de HTTP pero que no sigue el modelo petición-respuesta y usa tramas binarias para intercambiar la información.
En el esquema de autenticación básica el usuario:password se codifica en Base64.