¿Qué es HTTP, Estructura de la Solicitud y Respuesta HTTP?

Ya sea que seas un usuario o el dueño de un sitio web, la única palabra que puedes encontrar cuando navegas es HTTP. Es importante tener los fundamentos de HTTP para entender cómo funciona Internet y los detalles que se envían y reciben entre su navegador y el servidor web. Aquí hay una guía para principiantes de HTTP que intenta explicar los conceptos básicos.

Una guía para principiantes de HTTP

Hemos explicado los siguientes temas en esta guía:

  1. ¿Qué es el HTTP?
  2. Estructura de la solicitud HTTP del cliente
  3. Estructura de la respuesta HTTP del servidor web
  4. Ejemplo de una sesión HTTP de fin a fin
  5. ¿Qué es el HTTPS?
  6. Comprobando la petición y respuesta HTTP en el navegador Chrome
  7. Comprobando los encabezados HTTP con la herramienta libre
  8. Solución de problemas con los códigos de estado HTTP
  9. Detalles del código de estado HTTP
  10. Descargue la guía de códigos de estado HTTP

1. ¿Qué es el HTTP?

HTTP significa H yper T ext T ransfer P rotocolo. Es una base para la comunicación de datos en Internet.La comunicación de datos comienza con una solicitud enviada por un cliente y termina con la respuesta recibida de un servidor web.

  • Un sitio web que comienza con «http://» se introduce en un navegador web desde una computadora (cliente). El navegador puede ser un Chrome, Firefox, Edge, Safari, Opera o cualquier otro.
  • El navegador envía una solicitud al servidor web que aloja el sitio web.
  • El servidor web devuelve entonces una respuesta en forma de página HTML o cualquier otro formato de documento al navegador.
  • El navegador muestra la respuesta del servidor al usuario.

La representación simbólica de un proceso de comunicación HTTP se muestra en la siguiente imagen:

El navegador web se llama Agente de Usuario y otro ejemplo de agente de usuario son los rastreadores de los motores de búsqueda como Googlebot.

2. Estructura de solicitud de HTTP del cliente

Un simple mensaje de solicitud de una computadora cliente consta de los siguientes componentes:

  • Una línea de solicitud para obtener un recurso requerido, por ejemplo una solicitud GET /contento/página1.html está solicitando un recurso llamado /contento/página1.html del servidor.
  • Encabezados (Ejemplo – Lenguaje de aceptación: EN).
  • Una línea vacía.
  • Un cuerpo de mensaje que es opcional.

Todas las líneas deben terminar con un retorno de carro y una alimentación de línea. La línea vacía sólo debe contener retorno de carro y avance de línea sin espacios.

3. Estructura de respuesta HTTP del servidor web

Una simple respuesta del servidor contiene los siguientes componentes:

  • Código de estado HTTP (por ejemplo, HTTP/1.1 301 Movido permanentemente, significa que el recurso solicitado fue movido permanentemente y redirigido a algún otro recurso).
  • Encabezados (Ejemplo – Content-Type: html)
  • Una línea vacía.
  • Un cuerpo de mensaje que es opcional.

Todas las líneas de la respuesta del servidor deben terminar con un retorno de carro y una alimentación de línea. De manera similar a la solicitud, la línea vacía en una respuesta también debe tener sólo retorno de carro y avance de línea sin espacios.

4. Ejemplo de sesión HTTP

Tomemos un ejemplo de que quieres abrir una página «home.html» del sitio «yoursite.com». A continuación se muestra cómo debería ser la petición del navegador del cliente para obtener una página «home.html» de «yoursite.com».

GET /home.html HTTP/1.1Anfitrión: www.yoursite.com

La respuesta del servidor web debería ser como la siguiente:

HTTP/1.1 200 OKCita: Sun, 28 Jul 2013 15:37:37 GMTServidor: ApacheLa última modificación: Sun, 07 Jul 2013 06:13:43 GMTTransfer-Encoding: chunkedConexión: Keep-AliveTipo de contenido: text/html; charset=UTF-8Contenido de la página web

La codificación de transferencia en trozos es un método en el que el servidor responde con un dato en trozos y éste se utiliza en lugar del encabezado de la longitud del contenido. La comunicación se detiene cuando se recibe una longitud cero de chunk y este método se utiliza en la versión 1.1 de HTTP.

5. ¿Qué es ese HTTPS?

Ahora que entiendes el HTTP, ¿qué es ese HTTPS?HTTPS es el protocolo HTTP seguro necesario para enviar y recibir información de forma segura por Internet. Hoy en día es obligatorio que todos los sitios web tengan el protocolo HTTPS para tener una Internet segura. Navegadores como Google Chrome mostrarán una alerta con el mensaje «No es seguro» en la barra de direcciones si el sitio no se sirve a través de HTTPS.

Además de la seguridad y el cifrado, la estructura de comunicación del protocolo HTTPS sigue siendo la misma que la del protocolo HTTP, como se ha explicado anteriormente.

Se recomienda encarecidamente no utilizar información confidencial como los datos de las tarjetas de crédito en los sitios HTTP. Asegúrese de que las transacciones financieras se realicen a través del protocolo HTTPS.

6. ¿Cómo comprobar la solicitud y la respuesta HTTP en Chrome?

Bueno, es hora de ser prácticos. Tomemos el popular navegador Google Chrome, pero el proceso sigue siendo el mismo en todos los demás navegadores para ver los detalles.

  • Abre una página web en Google Chrome y ve al menú «Ver> Desarrollador> Herramientas de desarrollo».
  • También puedes abrir la consola de desarrollo haciendo clic con el botón derecho del ratón en la página y elegir la opción «Inspeccionar».
  • Ve a la pestaña «Red» y luego recarga la página. Ahora verás el tiempo de carga de cada uno de los componentes de la página.
  • Haz clic en el icono «Mostrar resumen» para eliminar la línea de tiempo y poder ver otros detalles con claridad.
  • Haz clic en la URL de la página en la barra de la izquierda y ve a la pestaña «Respuesta». (También puedes ver los mismos detalles en la pestaña «Vista previa»).

Visualización de la solicitud y respuesta HTTP en Google Chrome

Puede ver los detalles de la solicitud y las respuestas tal y como se ha explicado exactamente en las secciones anteriores. La pestaña «Encabezados» le mostrará los detalles de la información del encabezado HTTP de la solicitud y la respuesta para el elemento seleccionado.

7. Herramienta de verificación de encabezado HTTP

Al igual que Chrome, también hay muchas otras herramientas gratuitas disponibles para comprobar el código de respuesta recibido en las cabeceras del HTTP. Por ejemplo, ve a esta herramienta de comprobación de cabeceras HTTP, introduce cualquiera de las URL que quieras comprobar y haz clic en el botón de envío.

Verás los detalles completos del encabezado como abajo:

HTTP/1.1 301 Movido permanentementeServidor: nginxCita: Sun, 25 Feb 2018 16:32:55 GMTTipo de contenido: text/html; charset=iso-8859-1Conexión: manténgase vivoUbicación: https://www.webnots.com/Control de caché: edad máxima = 3600Expira: Sun, 25 Feb 2018 17:32:55 GMTHTTP/1.1 200 OKServidor: nginxCita: Sun, 25 Feb 2018 16:32:55 GMTTipo de contenido: text/html; charset=UTF-8Conexión: manténgase vivoVaría: Aceptar-CodificarX-Frame-Opciones: SAMEORIGINX-Powered-By: W3 Caché total/0.9.6Enlace: ; , , rel=enlace cortoVaría: Prototipo X-Forwarded, Agente de UsuarioControl de caché: edad máxima = 3600Expira: Sun, 25 Feb 2018 17:32:55 GMTJefe de Anfitrión: 192fc2e7e50945beb8231a492d6a8024

8. Solución de problemas con los códigos de estado HTTP

Hay muchas razones, una solicitud del navegador no obtendrá la respuesta requerida del servidor web. En esos casos de fallo, la información de respuesta del servidor web es importante para la solución de problemas. Los códigos de estado devueltos por el servidor pueden verse claramente en la sección Herramientas para desarrolladores de Chrome. En la captura de pantalla anterior, la línea 4 – código HTTP/1.1 200 OK indica que el servidor devolvió correctamente el recurso solicitado sin ningún problema. Puedes obtener estos detalles utilizando la herramienta de comprobación de encabezados HTTP como se explicó anteriormente.

El código de tres dígitos devuelto por el servidor se llama código de estado HTTP, aunque algunas personas lo llaman código de error aunque no es un error. Es simplemente una respuesta de estado y ayuda a encontrar la razón del fallo de comunicación. Recuerde que el fallo de comunicación también puede ocurrir debido a problemas del navegador y del ordenador, como problemas de la red local. En estos casos, los navegadores modernos como Chrome mostrarán errores del navegador como «err_network_changed», «err_internet_disconnected», etc.

9. Detalles de los códigos de estado HTTP

Los códigos de estado HTTP se desarrollan según las normas de Internet definidas por el Grupo de Tareas de Ingeniería de Internet (IETF). Se clasifican en cinco categorías diferentes, como se indica a continuación:

  • Serie 1xx – Mensaje informativo
  • 2xx – Mensaje de éxito
  • 3xx – Mensaje de redireccionamiento
  • 4xx – Mensajes de error relacionados con el cliente
  • 5xx – Mensajes de error relacionados con el servidor

9.1. Serie informativa – 1xx

Estos son los códigos de información enviados por el servidor que indican que la solicitud se recibe del cliente con éxito y que la misma se está procesando en el extremo del servidor. Esta es una respuesta provisional del servidor que normalmente sólo contiene la línea de estado y los encabezados opcionales y se termina con una línea vacía.Más información sobre los códigos de estado de cada 1xx en detalle.

9.2. Serie de éxitos – 2xx

Estos son los códigos de éxito enviados por el servidor que indican que la solicitud se ha recibido y procesado con éxito.Aprenda más sobre los códigos de estado de cada 2xx en detalle.

9.3. Redirección – 3xx

Estos son los códigos de estado para la reorientación. Cuando un agente de usuario (un navegador web o un rastreador) que solicita URL1 es redirigido a otro recurso URL2, entonces los códigos 2xx son devueltos como respuesta. Estos códigos no se ven en la ventana del navegador ya que los navegadores se redirigen automáticamente a otro URL.Aprende más sobre los códigos de estado de cada 3xx en detalle.

9.4. Errores del cliente – 4xx

Estos son los errores del lado del cliente que el servidor no pudo resolver. Un ejemplo simple y bien conocido es el error «404 – Página no encontrada» que aparece en la ventana del navegador cuando éste solicita una URL no disponible.Aprende más sobre los códigos de estado de cada 4xx en detalle.

9.5. Serie de errores del servidor – 5xx

Cuando un servidor web no puede cumplir con una solicitud válida de un cliente envía un código de error 5xx en la respuesta. Un ejemplo es el error «504 – Tiempo de espera de la puerta de enlace», en el que el servidor web1 está actuando como proxy para obtener una respuesta de otro servidor web2 pero no ha recibido una respuesta oportuna. Aprende más sobre cada código de estado 5xx en detalle.

10. Descargue la Guía de Códigos de Estado HTTP

Puedes descargar la guía completa de códigos de estado HTTP para referencia fuera de línea y aprender más sobre cada código en detalle.

Palabras finales

Recomendamos a todos los usuarios de Internet y a los propietarios de sitios web que aprendan los conceptos básicos de HTTP. Esto realmente ayudará a solucionar los problemas relacionados con el fallo de conexión. Esperamos haber cubierto todos los detalles necesarios para un usuario de nivel principiante en esta guía. Si ves que falta algún detalle importante, sólo tienes que dejar un comentario. Intentaremos actualizar esta guía para el beneficio de todos los lectores.