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
1xx
se produce cuando se negocia el protocolo de comunicación con el servidor (como vimos en HTTP/2 o en el caso de WebSockets1). Usa estetelnet
para hacer la siguiente petición:telnet demo.piesocket.com 80
GET /v3/channel_123 HTTP/1.1 Host: demo.piesocket.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13
-
La respuesta
2xx
más común es200 OK
que suele venir acompañada de un cuerpo. Éste se envía de manera similar al visto en unPOST
y va acompañado de las mismas cabeceras. Usa estetelnet
para hacer las siguientes peticiones:telnet httpbin.org 80
GET /image/png HTTP/1.0
GET /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
3xx
sucede cuando se navega a una web usandohttp
para redirigir ahttps
. Usa estetelnet
para hacer la siguiente petición:telnet github.com 80
HEAD / 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
4xx
corresponden 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 estetelnet
para hacer las siguientes peticiones:telnet httpbin.org 80
GET /basic-auth/user/pass HTTP/1.0
GET /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
5xx
corresponden a problemas en el servidor, como servidor sobrecargado o errores de implementación del servicio. Usa estetelnet
para hacer la siguiente petición:telnet httpbin.org 80
GET /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.