{"id":13130,"date":"2024-05-28T20:23:16","date_gmt":"2024-05-28T18:23:16","guid":{"rendered":"https:\/\/xn--nicols-tta.es\/?p=13130"},"modified":"2024-05-28T20:23:16","modified_gmt":"2024-05-28T18:23:16","slug":"http-lo-minimo-que-todo-desarrollador-web-debe-saber","status":"publish","type":"post","link":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/","title":{"rendered":"HTTP &#8211; Lo m\u00ednimo que todo desarrollador web debe saber"},"content":{"rendered":"\n<h2 class=\"wp-block-heading has-text-align-left has-black-color has-text-color has-link-color has-medium-font-size wp-elements-14d9f20c775e9930b4e2ac6568fec01d\">fundamentos de HTTP Lo m\u00ednimo<\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left has-medium-font-size\">Conceptos b\u00e1sicos <\/h3>\n\n\n\n<p class=\"has-text-align-left\">El protocolo HTTP es un protocolo ampliable, es decir se puede a\u00f1adir \u00abvocabulario\u00bb. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-text-align-left\">HTTP est\u00e1 basado en unos pocos conceptos b\u00e1sicos como el concepto de recursos y URIs, una estructura sencilla de mensajes, y una arquitectura de cliente-servidor para ordenar el flujo de las comunicaciones.<\/p>\n\n\n\n<p class=\"has-text-align-left\">A dem\u00e1s de estos conceptos, a lo largo de su desarrollo han aparecido otros nuevos y se han a\u00f1adido funcionalidades y reglas sem\u00e1nticas, creando nuevos m\u00e9todos y cabeceras.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"art\u00edculos\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP#art%C3%ADculos\">Art\u00edculos<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\">Generalidades del HTTP<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Descripci\u00f3n de qu\u00e9 es el protocolo HTTP y su funci\u00f3n en la arquitectura de la Web.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Evolution_of_HTTP\">Evoluci\u00f3n del HTTP<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">HTTP fue creado a comienzos de la d\u00e9cada de 1990s y ha sido ampliado con nuevas versiones varias veces. En este art\u00edculo se expone la evoluci\u00f3n de su desarrollo y las versiones HTTP\/0.9, HTTP\/1.0, HTTP\/1.1 y la \u00faltima versi\u00f3n HTTP\/2 as\u00ed como detalles de las funciones que se han ido incluyendo.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Negotiating_an_HTTP_version\">Negociaci\u00f3n de la versi\u00f3n de HTTP<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Se explica como un cliente y un servidor pueden negociar una versi\u00f3n espec\u00edfica de HTTP y eventualmente actualizar la version usada.<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Resources_and_URIs\">Recursos y URIs<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Una breve descripci\u00f3n sobre qu\u00e9 son los recursos, identificadores y localidades en la Web.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Identifying_resources_on_the_Web\">Identificaci\u00f3n de recursos en la Web<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Descripci\u00f3n de como se referencian recursos en la Web, como son referenciados y como localizarlos.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Data_URLs\">URIs de datos<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Hay un tipo de URIs que permiten integrar directamente el recurso al que se\u00f1alan. Los URIs de datos, son muy ventajosos, pero tambi\u00e9n tienen algunas desventajas.<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Basics_of_HTTP\/Resource_URLs\">URLs de recursos<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Los recursos URL, prefijados con&nbsp;<code>resource:<\/code>&nbsp;en vez de&nbsp;<code>http<\/code>&nbsp;son usados por Firefox y algunas extensiones del navegador para cargar recursos internamente, pero parte de la informaci\u00f3n tambi\u00e9n est\u00e1 disponible para los sitios a los que se conecta el navegador.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP#separaci%C3%B3n_de_la_identidad_y_la_localizaci%C3%B3n_de_un_recurso_la_cabecera_alt-svc\">Separaci\u00f3n de la identidad y la localizaci\u00f3n de un recurso: la cabecera Alt-Svc<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">En la mayor\u00eda de los casos, la identidad y localizaci\u00f3n de un recurso Web, son compartidos, esto se puede modificar con la cabecera de HTTP:&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Alt-Svc\"><code>Alt-Svc<\/code><\/a>.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/MIME_types\">Tipos MIME<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Desde la versi\u00f3n HTTP\/1.0, es posible trasmitir distintos formatos de recursos. En este art\u00edculo se explica como se hace, usando la cabecera:&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Headers\/Content-Type\"><code>Content-Type<\/code><\/a>, y el est\u00e1ndar MIME.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Choosing_between_www_and_non-www_URLs\">Elecci\u00f3n de URLs: www y no-www<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">Recomendaci\u00f3n sobre el uso de dominios con prefijo www o no. En este art\u00edculo se explican los resultados de la elecci\u00f3n y c\u00f3mo hacerla.<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Basics_of_HTTP\/Resource_URLs\">Flujo de comunicaci\u00f3n en una sesi\u00f3n HTTP<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">En este art\u00edculo se describe una comunicaci\u00f3n t\u00edpica de una sesi\u00f3n HTTP, y lo que sucede internamente cuando se hace click en un hiper-v\u00ednculo.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Messages\">Mensajes HTTP<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">\n\n<!-- Mi primer bloque de anuncios -->\n<ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-8253829637174410\" data-ad-slot=\"9973444310\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n\n     (adsbygoogle = window.adsbygoogle || []).push({});\n\n<\/p>\n\n\n\n<p class=\"has-text-align-left\">Los mensajes HTTP, sean peticiones o respuestas, siguen una estructura muy concreta; en este art\u00edculo se describe su estructura, su prop\u00f3sito y posibilidades.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Frame%20and%20message%20structure%20in%20HTTP_2\">Tramas y estructura de los mensajes en HTTP\/2<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">La versi\u00f3n HTTP\/2 encapsula y representa los mensajes de HTTP\/1.x pero en tramas binarias. En este art\u00edculo se explica la estructura y los campos de las tramas, su finalidad y c\u00f3mo se codifica.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Connection_management_in_HTTP_1.x\">Proceso de conexi\u00f3n en HTTP\/1.x<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">HTTP\/1.1 fue la primera versi\u00f3n de HTTP que soport\u00f3 las conexiones persistentes y el&nbsp;<em>pipelining<\/em>. En este art\u00edculo se explican estos dos conceptos.<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Connection_management_in_HTTP_1.x\">Proceso de conexi\u00f3n en HTTP\/2<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">HTTP\/2 revis\u00f3 completamente, los m\u00e9todos de negociaci\u00f3n, creaci\u00f3n y mantenimiento de conexiones: en este art\u00edculo se explica como se puede consegu\u00edr la multiplexaci\u00f3n de las tramas y resolver el problema de &#8216;head-of-line&#8217;, que ten\u00edan las versiones anteriores de HTTP.<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Content_negotiation\">Negociaci\u00f3n de contenidos<\/a><\/p>\n\n\n\n<p class=\"has-text-align-left\">HTTP presenta una serie de cabeceras que comienzan con&nbsp;<code>Accept-<\/code>&nbsp;como medio para notificar al navegador, el formato, lenguaje, o codificaci\u00f3n que prefiere. En este art\u00edculo se explica el este proceso, como debe actuar el servidor, y como se elige la respuesta m\u00e1s apropiada.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/nicolas.cat\/wp-content\/uploads\/2024\/05\/desarrollador-comprobando-codigo-programacion@3x-scaled-1-1024x683.jpg\" alt=\"\" class=\"wp-image-13134\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading has-text-align-left\">Generalidades del protocolo HTTP<\/h1>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-left\">HTTP, de sus siglas en ingl\u00e9s: \u00abHypertext Transfer Protocol\u00bb, es el nombre de un protocolo el cual nos permite realizar una petici\u00f3n de datos y recursos, como pueden ser documentos&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTML\">HTML<\/a>. Es la base de cualquier intercambio de datos en la Web, y un protocolo de estructura cliente-servidor, esto quiere decir que una petici\u00f3n de datos es iniciada por el elemento que recibir\u00e1 los datos (el cliente), normalmente un navegador Web. As\u00ed, una p\u00e1gina web completa resulta de la uni\u00f3n de distintos sub-documentos recibidos, como, por ejemplo: un documento que especifique el estilo de maquetaci\u00f3n de la p\u00e1gina web (<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/CSS\">CSS<\/a>), el texto, las im\u00e1genes, v\u00eddeos, scripts, etc&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\/fetching_a_page.png\" alt=\"A Web document is the composition of different resources\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-left\">Clientes y servidores se comunican intercambiando mensajes individuales (en contraposici\u00f3n a las comunicaciones que utilizan flujos continuos de datos). Los mensajes que env\u00eda el cliente, normalmente un navegador Web, se llaman&nbsp;<em>peticiones<\/em>, y los mensajes enviados por el servidor se llaman&nbsp;<em>respuestas<\/em>.<\/p>\n\n\n\n<p class=\"has-text-align-left\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1596\" height=\"1144\" src=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\/http-layers.png\" alt=\"HTTP as an application layer protocol, on top of TCP (transport layer) and IP (network layer) and below the presentation layer.\"><\/p>\n\n\n\n<p class=\"has-text-align-left\">Dise\u00f1ado a principios de la d\u00e9cada de 1990,&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;es un protocolo ampliable, que ha ido evolucionando con el tiempo. Es lo que se conoce como un protocolo de la capa de aplicaci\u00f3n, y se transmite sobre el protocolo&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/TCP\">TCP<\/a>, o el protocolo encriptado&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/TLS\">TLS<\/a>, aunque te\u00f3ricamente podr\u00eda usarse cualquier otro protocolo fiable. Gracias a que es un protocolo capaz de ampliarse, se usa no solo para transmitir documentos de hipertexto (<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTML\">HTML<\/a>), si no que adem\u00e1s, se usa para transmitir im\u00e1genes o v\u00eddeos, o enviar datos o contenido a los servidores, como en el caso de los formularios de datos.&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;puede incluso ser utilizado para transmitir partes de documentos, y actualizar p\u00e1ginas Web en el acto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"arquitectura_de_los_sistemas_basados_en_http\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#arquitectura_de_los_sistemas_basados_en_http\">Arquitectura de los sistemas basados en HTTP<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;es un protocolo basado en el principio de cliente-servidor: las peticiones son enviadas por una entidad: el agente del usuario (o un proxy a petici\u00f3n de uno). La mayor\u00eda de las veces el agente del usuario (cliente) es un navegador Web, pero podr\u00eda ser cualquier otro programa, como por ejemplo un programa-robot, que explore la Web, para adquirir datos de su estructura y contenido para uso de un buscador de Internet.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Cada petici\u00f3n individual se env\u00eda a un servidor, el cu\u00e1l la gestiona y responde. Entre cada&nbsp;<em>petici\u00f3n<\/em>&nbsp;y&nbsp;<em>respuesta<\/em>, hay varios intermediarios, normalmente denominados&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Glossary\/Proxy_server\">proxies<\/a>, los cuales realizan distintas funciones, como: gateways o&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/Cache\">caches<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\/client-server-chain.png\" alt=\"Client server chain\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-left\">En realidad, hay m\u00e1s elementos intermedios, entre un navegador y el servidor que gestiona su petici\u00f3n: hay otros tipos de dispositivos: como&nbsp;<em>routers<\/em>,&nbsp;<em>modems<\/em>&nbsp;&#8230; Es gracias a la arquitectura en capas de la Web, que estos intermediarios, son transparentes al navegador y al servidor, ya que&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;se apoya en los protocolos de red y transporte.&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;es un protocolo de aplicaci\u00f3n, y por tanto se apoya sobre los anteriores. Aunque para diagnosticar problemas en redes de comunicaci\u00f3n, las capas inferiores son irrelevantes para la definici\u00f3n del protocolo&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>&nbsp;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"cliente_el_agente_del_usuario\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#cliente_el_agente_del_usuario\">Cliente: el agente del usuario<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">El agente del usuario, es cualquier herramienta que actu\u00e9 en representaci\u00f3n del usuario. Esta funci\u00f3n es realizada en la mayor parte de los casos por un navegador Web. Hay excepciones, como el caso de programas espec\u00edficamente usados por desarrolladores para desarrollar y depurar sus aplicaciones.<\/p>\n\n\n\n<p class=\"has-text-align-left\">El navegador es&nbsp;<strong>siempre<\/strong>&nbsp;el que inicia una comunicaci\u00f3n (petici\u00f3n), y el servidor nunca la comienza (hay algunos mecanismos que permiten esto, pero no son muy habituales).<\/p>\n\n\n\n<p class=\"has-text-align-left\">Para poder mostrar una p\u00e1gina Web, el navegador env\u00eda una petici\u00f3n de documento&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTML\">HTML<\/a>&nbsp;al servidor. Entonces procesa este documento, y env\u00eda m\u00e1s peticiones para solicitar scripts, hojas de estilo (<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/CSS\">CSS<\/a>), y otros datos que necesite (normalmente v\u00eddeos y\/o im\u00e1genes). El navegador, une todos estos documentos y datos, y compone el resultado final: la p\u00e1gina Web. Los scripts, los ejecuta tambi\u00e9n el navegador, y tambi\u00e9n pueden generar m\u00e1s peticiones de datos en el tiempo, y el navegador, gestionar\u00e1 y actualizar\u00e1 la p\u00e1gina Web en consecuencia.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Una p\u00e1gina Web, es un documento de hipertexto (<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/HTTP\">HTTP<\/a>), luego habr\u00e1 partes del texto en la p\u00e1gina que puedan ser enlaces (<a>links<\/a>) que pueden ser activados (normalmente al hacer click sobre ellos) para hacer una petici\u00f3n de una nueva p\u00e1gina Web, permitiendo as\u00ed dirigir su agente de usuario y navegar por la Web. El navegador, traduce esas direcciones en peticiones de HTTP, e interpretara y procesar\u00e1 las respuestas HTTP, para presentar al usuario la p\u00e1gina Web que desea.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"el_servidor_web\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#el_servidor_web\">El servidor Web<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Al otro lado del canal de comunicaci\u00f3n, est\u00e1 el servidor, el cual&nbsp;<em>\u00absirve\u00bb<\/em>&nbsp;los datos que ha pedido el cliente. Un servidor conceptualmente es una unica entidad, aunque puede estar formado por varios elementos, que se reparten la carga de peticiones, (load balancing), u otros programas, que gestionan otros computadores (como cache, bases de datos, servidores de correo electr\u00f3nico, &#8230;), y que generan parte o todo el documento que ha sido pedido.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Un servidor no tiene que ser necesariamente un \u00fanico equipo f\u00edsico, aunque si que varios servidores pueden estar funcionando en un \u00fanico computador. En el est\u00e1ndar HTTP\/1.1 y&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Headers\/Host\"><code>Host<\/code><\/a>&nbsp;, pueden incluso compartir la misma direcci\u00f3n de IP.<\/p>\n\n\n\n<p class=\"has-text-align-left\">\n\n<!-- Mi primer bloque de anuncios -->\n<ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-8253829637174410\" data-ad-slot=\"9973444310\" data-ad-format=\"auto\" data-full-width-responsive=\"true\"><\/ins>\n\n     (adsbygoogle = window.adsbygoogle || []).push({});\n\n<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"proxies\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#proxies\">Proxies<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Entre el cliente y el servidor, adem\u00e1s existen distintos dispositivos que gestionan los mensajes HTTP. Dada la arquitectura en capas de la Web, la mayoria de estos dispositivos solamente gestionan estos mensajes en los niveles de protocolo inferiores: capa de transporte, capa de red o capa f\u00edsica, siendo as\u00ed transparentes para la capa de comunicaciones de aplicaci\u00f3n del HTTP, adem\u00e1s esto aumenta el rendimiento de la comunicaci\u00f3n. Aquellos dispositivos, que s\u00ed operan procesando la capa de aplicaci\u00f3n son conocidos como proxies. Estos pueden ser transparentes, o no (modificando las peticiones que pasan por ellos), y realizan varias funciones:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-left is-layout-flow wp-block-quote-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li>caching (la cach\u00e9 puede ser p\u00fablica o privada, como la cach\u00e9 de un navegador)<\/li>\n\n\n\n<li>filtrado (como un anti-virus, control parental, &#8230;)<\/li>\n\n\n\n<li>balanceo de carga de peticiones (para permitir a varios servidores responder a la carga total de peticiones que reciben)<\/li>\n\n\n\n<li>autentificaci\u00f3n (para el control al acceso de recursos y datos)<\/li>\n\n\n\n<li>registro de eventos (para tener un hist\u00f3rico de los eventos que se producen)<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"caracter\u00edsticas_clave_del_protocolo_http\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#caracter%C3%ADsticas_clave_del_protocolo_http\">Caracter\u00edsticas clave del protocolo HTTP<\/a><\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"http_es_sencillo\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#http_es_sencillo\">HTTP es sencillo<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Incluso con el incremento de complejidad, que se produjo en el desarrollo de la versi\u00f3n del protocolo HTTP\/2, en la que se encapsularon los mensajes, HTTP esta pensado y desarrollado para ser le\u00eddo y f\u00e1cilmente interpretado por las personas, haciendo de esta manera m\u00e1s facil la depuraci\u00f3n de errores, y reduciendo la curva de aprendizaje para las personan que empieza a trabajar con \u00e9l.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"http_es_extensible\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#http_es_extensible\">HTTP es extensible<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Presentadas en la versi\u00f3n HTTP\/1.0, las cabeceras de HTTP, han hecho que este protocolo sea f\u00e1cil de ampliar y de experimentar con \u00e9l. Funcionalidades nuevas pueden desarrollarse, sin m\u00e1s que un cliente y su servidor, comprendan la misma sem\u00e1ntica sobre las cabeceras de HTTP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"http_es_un_protocolo_con_sesiones_pero_sin_estados\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#http_es_un_protocolo_con_sesiones_pero_sin_estados\">HTTP es un protocolo con sesiones, pero sin estados<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">HTTP es un protocolo sin estado, es decir: no guarda ning\u00fan dato entre dos peticiones en la m\u00edsma sesi\u00f3n. Esto crea problem\u00e1ticas, en caso de que los usuarios requieran interactuar con determinadas p\u00e1ginas Web de forma ordenada y coherente, por ejemplo, para el uso de \u00abcestas de la compra\u00bb en p\u00e1ginas que utilizan en comercio electr\u00f3nico. Pero, mientras HTTP ciertamente es un protocolo sin estado, el uso de HTTP cookies, si permite guardar datos con respecto a la sesi\u00f3n de comunicaci\u00f3n. Usando la capacidad de ampliaci\u00f3n del protocolo HTTP, las cookies permiten crear un contexto com\u00fan para cada sesi\u00f3n de comunicaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"http_y_conexiones\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#http_y_conexiones\">HTTP y conexiones<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Una conexi\u00f3n se gestiona al nivel de la capa de trasporte, y por tanto queda fuera del alcance del protocolo HTTP. A\u00fan con este factor, HTTP no necesita que el protocolo que lo sustenta mantenga una conexi\u00f3n continua entre los participantes en la comunicaci\u00f3n, solamente necesita que sea un protocolo fiable o que no pierda mensajes (como m\u00ednimo, en todo caso, un protocolo que sea capaz de detectar que se ha pedido un mensaje y reporte un error). De los dos protocolos m\u00e1s comunes en Internet, TCP es fiable, mientras que UDP, no lo es. Por lo tanto HTTP, se apoya en el uso del protocolo TCP, que est\u00e1 orientado a conexi\u00f3n, aunque una conexi\u00f3n continua no es necesaria siempre.<\/p>\n\n\n\n<p class=\"has-text-align-left\">En la versi\u00f3n del protocolo HTTP\/1.0, habr\u00eda una conexi\u00f3n TCP por cada petici\u00f3n\/respuesta intercambiada, presentando esto dos grandes inconvenientes: abrir y crear una conexi\u00f3n requiere varias rondas de mensajes y por lo tanto resultaba lento. Esto ser\u00eda m\u00e1s eficiente si se mandaran varios mensajes.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Para atenuar estos inconvenientes, la versi\u00f3n del protocolo HTTP\/1.1 present\u00f3 el &#8216;pipelining&#8217; y las conexiones persistentes: el protocolo TCP que lo transmit\u00eda en la capa inferior se pod\u00eda controlar parcialmente, mediante la cabecera &#8216;Connection&#8217;. La versi\u00f3n del protocolo HTTP\/2 fue m\u00e1s all\u00e1 y usa multiplexaci\u00f3n de mensajes sobre un \u00fanica conexi\u00f3n, siendo as\u00ed una comunicaci\u00f3n m\u00e1s eficiente.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Todav\u00eda hoy se sigue investigando y desarrollando para conseguir un protocolo de transporte m\u00e1s conveniente para el HTTP. Por ejemplo, Google est\u00e1 experimentado con&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/QUIC\" target=\"_blank\" rel=\"noreferrer noopener\">QUIC<\/a>, que se apoya en el protocolo UDP y presenta mejoras en la fiabilidad y eficiencia de la comunicaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"\u00bfqu\u00e9_se_puede_controlar_con_http\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#%C2%BFqu%C3%A9_se_puede_controlar_con_http\">\u00bfQu\u00e9 se puede controlar con HTTP?<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\">La caracter\u00edstica del protocolo HTTP de ser ampliable, ha permitido que durante su desarrollo se hayan implementado m\u00e1s funciones de control y funcionalidad sobre la Web: cach\u00e9 o m\u00e9todos de identificaci\u00f3n o autentificaci\u00f3n fueron temas que se abordaron pronto en su historia. Al contrario la relajaci\u00f3n de la restricci\u00f3n de origen solo se ha abordado en los a\u00f1os de la d\u00e9cada de 2010.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Se presenta a continuaci\u00f3n una lista con los elementos que se pueden controlar con el protocolo HTTP:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-left is-layout-flow wp-block-quote-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li><em><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Caching\">Cache<\/a><\/em>&nbsp;El como se almacenan los documentos en la cach\u00e9, puede ser especificado por HTTP. El servidor puede indicar a los proxies y clientes, que quiere almacenar y durante cuanto tiempo. Aunque el cliente, tambi\u00e9n puede indicar a los proxies de cach\u00e9 intermedios que ignoren el documento almacenado.<\/li>\n\n\n\n<li><em>Flexibilidad del requisito de origen<\/em>&nbsp;Para prevenir invasiones de la privacidad de los usuarios, los navegadores Web, solamente permiten a p\u00e1ginas del mismo origen, compartir la informaci\u00f3n o datos. Esto es una complicaci\u00f3n para el servidor, asi que mediante cabeceras HTTP, se puede flexibilizar o relajar esta divisi\u00f3n entre cliente y servidor<\/li>\n\n\n\n<li><em>Autentificaci\u00f3n<\/em>&nbsp;Hay p\u00e1ginas Web, que pueden estar protegidas, de manera que solo los usuarios autorizados puedan acceder. HTTP provee de servicios b\u00e1sicos de autentificaci\u00f3n, por ejemplo mediante el uso de cabeceras como:&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Headers\/WWW-Authenticate\"><code>WWW-Authenticate<\/code><\/a>, o estableciendo una sesi\u00f3n especifica mediante el uso de&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Cookies\">HTTP cookies<\/a>.<\/li>\n\n\n\n<li><em><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Proxy_servers_and_tunneling\">Proxies y tunneling<\/a><\/em>&nbsp;Servidores y\/o clientes pueden estar en intranets y esconder as\u00ed su verdadera direcci\u00f3n IP a otros. Las peticiones HTTP utilizan los proxies para acceder a ellos. Pero no todos los proxies son HTTP proxies. El protocolo SOCKS, por ejemplo, opera a un nivel m\u00e1s bajo. Otros protocolos, como el FTP, pueden ser servidos mediante estos proxies.<\/li>\n\n\n\n<li><em>Sesiones<\/em>&nbsp;El uso de&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Cookies\">HTTP cookies<\/a>&nbsp;permite relacionar peticiones con el estado del servidor. Esto define las sesiones, a pesar de que por definici\u00f3n el protocolo HTTP es un protocolo sin estado. Esto es muy \u00fatil no s\u00f3lo para aplicaciones de comercio electr\u00f3nico, sino tambi\u00e9n para cualquier sitio que permita configuraci\u00f3n al usuario.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"flujo_de_http\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#flujo_de_http\">Flujo de HTTP<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\">Cuando el cliente quiere comunicarse con el servidor, tanto si es directamente con \u00e9l, o a trav\u00e9s de un proxy intermedio, realiza los siguientes pasos:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-left is-layout-flow wp-block-quote-is-layout-flow\">\n<ol class=\"wp-block-list\">\n<li>Abre una conexi\u00f3n TCP: la conexi\u00f3n TCP se usar\u00e1 para hacer una petici\u00f3n, o varias, y recibir la respuesta. El cliente pude abrir una conexi\u00f3n nueva, reusar una existente, o abrir varias a la vez hacia el servidor.<\/li>\n\n\n\n<li>Hacer una petici\u00f3n HTTP: Los mensajes HTTP (previos a HTTP\/2) son legibles en texto plano. A partir de la versi\u00f3n del protocolo HTTP\/2, los mensajes se encapsulan en franjas, haciendo que no sean directamente interpretables, aunque el principio de operaci\u00f3n es el mismo.HTMLCopy to Clipboard<code>GET \/ HTTP\/1.1 Host: developer.mozilla.org Accept-Language: fr<\/code><\/li>\n\n\n\n<li>Leer la respuesta enviada por el servidor:HTMLCopy to Clipboard<code>HTTP\/1.1 200 OK Date: Sat, 09 Oct 2010 14:28:02 GMT Server: Apache Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT ETag: \"51142bc1-7449-479b075b2891b\" Accept-Ranges: bytes Content-Length: 29769 Content-Type: text\/html &lt;!DOCTYPE html... (here comes the 29769 bytes of the requested web page)<\/code><\/li>\n\n\n\n<li>Cierre o reuso de la conexi\u00f3n para futuras peticiones.<\/li>\n<\/ol>\n<\/blockquote>\n\n\n\n<p class=\"has-text-align-left\">Si est\u00e1 activado el HTTP&nbsp;<em>pipelining<\/em>, varias peticiones pueden enviarse sin tener que esperar que la primera respuesta haya sido satisfecha. Este procedimiento es dif\u00edcil de implementar en las redes de computadores actuales, donde se mezclan software antiguos y modernos. As\u00ed que el HTTP&nbsp;<em>pipelining<\/em>&nbsp;ha sido substituido en HTTP\/2 por el multiplexado de varias peticiones en una sola trama<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"mensajes_http\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#mensajes_http\">Mensajes HTTP<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\">En las versiones del protocolo HTTP\/1.1 y anteriores los mensajes eran de formato texto y eran totalmente comprensibles directamente por una persona. En HTTP\/2, los mensajes estan estructurados en un nuevo formato binario y las tramas permiten la compresi\u00f3n de las cabeceras y su multiplexaci\u00f3n. As\u00ed pues, incluso si solamente parte del mensaje original en HTTP se env\u00eda en este formato, la sematica de cada mensaje es la misma y el cliente puede formar el mensaje original en HTTP\/1.1. Luego, es posible interpretar los mensajes HTTP\/2 en el formato de HTTP\/1.1.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Existen dos tipos de mensajes HTTP: peticiones y respuestas, cada uno sigue su propio formato.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"peticiones\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#peticiones\">Peticiones<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Un ejemplo de petici\u00f3n HTTP:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\/http_request.png\" alt=\"A basic HTTP request\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-left\">Una petici\u00f3n de HTTP, est\u00e1 formado por los siguientes campos:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-left is-layout-flow wp-block-quote-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li>Un&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Methods\">m\u00e9todo<\/a>&nbsp;HTTP, normalmente pueden ser un verbo, como:&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Methods\/GET\"><code>GET<\/code><\/a>,&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Methods\/POST\"><code>POST<\/code><\/a>&nbsp;o un nombre como:&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Methods\/OPTIONS\"><code>OPTIONS<\/code><\/a>&nbsp;o&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Methods\/HEAD\"><code>HEAD<\/code><\/a>, que defina la operaci\u00f3n que el cliente quiera realizar. El objetivo de un cliente, suele ser una petici\u00f3n de recursos, usando GET, o presentar un valor de un&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Learn\/Forms\">formulario HTML<\/a>, usando POST, aunque en otras ocasiones puede hacer otros tipos de peticiones.<\/li>\n\n\n\n<li>La direcci\u00f3n del recurso pedido; la URL del recurso, sin los elementos obvios por el contexto, como pueden ser: sin el&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/Protocol\">protocolo<\/a>&nbsp;(<code>http:\/\/<\/code>), el&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/Domain\">dominio<\/a>&nbsp;(aqu\u00ed&nbsp;<code>developer.mozilla.org<\/code>), o el&nbsp;<a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Glossary\/Port\">puerto<\/a>&nbsp;TCP (aqu\u00ed el 80).<\/li>\n\n\n\n<li>La versi\u00f3n del protocolo HTTP.<\/li>\n\n\n\n<li>Cabeceras HTTP opcionales, que pueden aportar informaci\u00f3n adicional a los servidores.<\/li>\n\n\n\n<li>O un cuerpo de mensaje, en alg\u00fan m\u00e9todo, como puede ser POST, en el cual env\u00eda la informaci\u00f3n para el servidor.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-left\" id=\"respuestas\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#respuestas\">Respuestas<\/a><\/h3>\n\n\n\n<p class=\"has-text-align-left\">Un ejemplo de repuesta:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview\/http_response.png\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"has-text-align-left\">Las respuestas est\u00e1n formadas por los siguientes campos:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote has-text-align-left is-layout-flow wp-block-quote-is-layout-flow\">\n<ul class=\"wp-block-list\">\n<li>La versi\u00f3n del protocolo HTTP que est\u00e1n usando.<\/li>\n\n\n\n<li>Un c\u00f3digo de estado, indicando si la petici\u00f3n ha sido exitosa, o no, y debido a que.<\/li>\n\n\n\n<li>Un mensaje de estado, una breve descripci\u00f3n del c\u00f3digo de estado.<\/li>\n\n\n\n<li>Cabeceras HTTP, como las de las peticiones.<\/li>\n\n\n\n<li>Opcionalmente, el recurso que se ha pedido.<\/li>\n<\/ul>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\" id=\"conclusi\u00f3n\"><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Overview#conclusi%C3%B3n\">Conclusi\u00f3n<\/a><\/h2>\n\n\n\n<p class=\"has-text-align-left\">El protocolo HTTP es un protocolo ampliable y f\u00e1cil de usar. Su estructura cliente-servidor, junto con la capacidad para usar cabeceras, permite a este protocolo evolucionar con las nuevas y futuras aplicaciones en Internet.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Aunque la versi\u00f3n del protocolo HTTP\/2 a\u00f1ade algo de complejidad, al utilizar un formato en binario, esto aumenta su rendimiento, y la estructura y semantica de los mensajes es la misma desde la versi\u00f3n HTTP\/1.0. El flujo de comunicaciones en una sesi\u00f3n es sencillo y puede ser f\u00e1cilmente estudiado e investigado con un simple&nbsp;<a href=\"https:\/\/firefox-source-docs.mozilla.org\/devtools-user\/network_monitor\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">monitor de mensajes HTTP<\/a>.<\/p>\n\n\n\n<p class=\"has-text-align-left\"><strong><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Basics_of_HTTP\/Evolution_of_HTTP\">Evoluci\u00f3n del protocolo HTTP<\/a><\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left\"><strong><a href=\"https:\/\/developer.mozilla.org\/es\/docs\/Web\/HTTP\/Messages\">Mensajes HTTP<\/a><\/strong><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>El protocolo HTTP es un protocolo ampliable, es decir se puede a\u00f1adir \u00abvocabulario\u00bb.<\/p>\n","protected":false},"author":7,"featured_media":13133,"comment_status":"open","ping_status":"open","sticky":false,"template":"templates\/template-full-width.php","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[13,21,14,54,19],"class_list":["post-13130","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo-web","tag-desarrollo","tag-diseno","tag-html","tag-http","tag-web","entry entry-center"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas\" \/>\n<meta property=\"og:description\" content=\"El protocolo HTTP es un protocolo ampliable, es decir se puede a\u00f1adir &quot;vocabulario&quot;.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog de Nicolas\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-28T18:23:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"670\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Blog de Nicolas\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Blog de Nicolas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/\"},\"author\":{\"name\":\"Blog de Nicolas\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#\\\/schema\\\/person\\\/d1ed6b5e610e5abf520b0df0fca03a12\"},\"headline\":\"HTTP &#8211; Lo m\u00ednimo que todo desarrollador web debe saber\",\"datePublished\":\"2024-05-28T18:23:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/\"},\"wordCount\":3366,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2024\\\/05\\\/que-debe-saber-un-programador-web-header.jpg\",\"keywords\":[\"desarrollo\",\"dise\u00f1o\",\"html\",\"http\",\"web\"],\"articleSection\":[\"Desarrollo Web.\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/\",\"name\":\"HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2024\\\/05\\\/que-debe-saber-un-programador-web-header.jpg\",\"datePublished\":\"2024-05-28T18:23:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#primaryimage\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2024\\\/05\\\/que-debe-saber-un-programador-web-header.jpg\",\"contentUrl\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2024\\\/05\\\/que-debe-saber-un-programador-web-header.jpg\",\"width\":1440,\"height\":670},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/2024\\\/05\\\/28\\\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HTTP &#8211; Lo m\u00ednimo que todo desarrollador web debe saber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#website\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/\",\"name\":\"Blog de Nicolas\",\"description\":\"Nicolas Desarrollo WordPress Multisite\",\"publisher\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#organization\",\"name\":\"Blog de Nicolas\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2025\\\/01\\\/prenom-nicolas-1-300x73-1.png\",\"contentUrl\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2025\\\/01\\\/prenom-nicolas-1-300x73-1.png\",\"width\":300,\"height\":73,\"caption\":\"Blog de Nicolas\"},\"image\":{\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/#\\\/schema\\\/person\\\/d1ed6b5e610e5abf520b0df0fca03a12\",\"name\":\"Blog de Nicolas\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/avatars\\\/7\\\/1737055720-bpfull.jpg\",\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/avatars\\\/7\\\/1737055720-bpfull.jpg\",\"contentUrl\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/wp-content\\\/uploads\\\/avatars\\\/7\\\/1737055720-bpfull.jpg\",\"caption\":\"Blog de Nicolas\"},\"url\":\"https:\\\/\\\/nicolas.cat\\\/blogdnicolas\\\/author\\\/blogdnicolas\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/","og_locale":"es_ES","og_type":"article","og_title":"HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas","og_description":"El protocolo HTTP es un protocolo ampliable, es decir se puede a\u00f1adir \"vocabulario\".","og_url":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/","og_site_name":"Blog de Nicolas","article_published_time":"2024-05-28T18:23:16+00:00","og_image":[{"width":1440,"height":670,"url":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg","type":"image\/jpeg"}],"author":"Blog de Nicolas","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Blog de Nicolas","Tiempo de lectura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#article","isPartOf":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/"},"author":{"name":"Blog de Nicolas","@id":"https:\/\/nicolas.cat\/blogdnicolas\/#\/schema\/person\/d1ed6b5e610e5abf520b0df0fca03a12"},"headline":"HTTP &#8211; Lo m\u00ednimo que todo desarrollador web debe saber","datePublished":"2024-05-28T18:23:16+00:00","mainEntityOfPage":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/"},"wordCount":3366,"commentCount":0,"publisher":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/#organization"},"image":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#primaryimage"},"thumbnailUrl":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg","keywords":["desarrollo","dise\u00f1o","html","http","web"],"articleSection":["Desarrollo Web."],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/","url":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/","name":"HTTP - Lo m\u00ednimo que todo desarrollador web debe saber - Blog de Nicolas","isPartOf":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#primaryimage"},"image":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#primaryimage"},"thumbnailUrl":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg","datePublished":"2024-05-28T18:23:16+00:00","breadcrumb":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#primaryimage","url":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg","contentUrl":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2024\/05\/que-debe-saber-un-programador-web-header.jpg","width":1440,"height":670},{"@type":"BreadcrumbList","@id":"https:\/\/nicolas.cat\/blogdnicolas\/2024\/05\/28\/http-lo-minimo-que-todo-desarrollador-web-debe-saber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/nicolas.cat\/blogdnicolas\/"},{"@type":"ListItem","position":2,"name":"HTTP &#8211; Lo m\u00ednimo que todo desarrollador web debe saber"}]},{"@type":"WebSite","@id":"https:\/\/nicolas.cat\/blogdnicolas\/#website","url":"https:\/\/nicolas.cat\/blogdnicolas\/","name":"Blog de Nicolas","description":"Nicolas Desarrollo WordPress Multisite","publisher":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nicolas.cat\/blogdnicolas\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/nicolas.cat\/blogdnicolas\/#organization","name":"Blog de Nicolas","url":"https:\/\/nicolas.cat\/blogdnicolas\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/nicolas.cat\/blogdnicolas\/#\/schema\/logo\/image\/","url":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2025\/01\/prenom-nicolas-1-300x73-1.png","contentUrl":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/sites\/5\/2025\/01\/prenom-nicolas-1-300x73-1.png","width":300,"height":73,"caption":"Blog de Nicolas"},"image":{"@id":"https:\/\/nicolas.cat\/blogdnicolas\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/nicolas.cat\/blogdnicolas\/#\/schema\/person\/d1ed6b5e610e5abf520b0df0fca03a12","name":"Blog de Nicolas","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/avatars\/7\/1737055720-bpfull.jpg","url":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/avatars\/7\/1737055720-bpfull.jpg","contentUrl":"https:\/\/nicolas.cat\/blogdnicolas\/wp-content\/uploads\/avatars\/7\/1737055720-bpfull.jpg","caption":"Blog de Nicolas"},"url":"https:\/\/nicolas.cat\/blogdnicolas\/author\/blogdnicolas\/"}]}},"_links":{"self":[{"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/posts\/13130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/comments?post=13130"}],"version-history":[{"count":0,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/posts\/13130\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/media\/13133"}],"wp:attachment":[{"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/media?parent=13130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/categories?post=13130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nicolas.cat\/blogdnicolas\/wp-json\/wp\/v2\/tags?post=13130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}