XMLHttpRequest (XHR), también referida como XMLHTTP (Extensible Markup Language / Hypertext Transfer Protocol), es una interfaz empleada para realizar peticiones HTTP y HTTPS a servidores Web. Para los datos transferidos se usa cualquier codificación basada en texto, incluyendo: texto plano, XML, JSON, HTML y codificaciones particulares específicas. La interfaz se implementa como una clase de la que una aplicación cliente puede generar tantas instancias como necesite para manejar el diálogo con el servidor.

El uso más popular, si bien no el único, de esta interfaz es proporcionar contenido dinámico y actualizaciones asíncronas en páginas WEB mediante tecnologías construidas sobre ella como por ejemplo AJAX.

La primera versión de la interfaz XMLHttpRequest fue desarrollada por Microsoft que la introdujo en la versión 5.0 de Internet Explorer.1 Esta primera versión se publicó utilizando un objeto ActiveX, lo que significa que podía ser utilizada desde cualquier entorno de desarrollo de software con soporte para esta tecnología, es decir, la práctica totalidad de plataformas generalistas de desarrollo para Microsoft Windows. Microsoft ha seguido manteniendo y actualizando esta tecnología incluyendo la funcionalidad dentro del Microsoft XML Parser (MSXML) en sus sucesivas versiones. A partir de la versión 7 de Internet Explorer la interfaz se ofrece de manera integrada.1 Al ser integrada, el acceso a la interfaz se realiza enteramente con objetos (JScript o VBScript) proporcionados por el navegador y no mediante bibliotecas externas.

El proyecto Mozilla incorporó la primera implementación integrada de XMLHttpRequest en la versión 1.0 de la Suite Mozilla en 2002. Esta implementación sería seguida por Apple a partir de Safari 1.2, Konqueror, Opera Software a partir del Opera 8.0 e iCab desde la versión 3.0b352.

El World Wide Web Consortium presentó el 27 de septiembre de 2006 el primer borrador de una especificación estándar de la interfaz.2 La versión actual de 17 de enero de 2012, denominada XMLHttpRequest Level 2 es el resultado de varias revisiones.3

Mientras no se alcance una versión definitiva, los desarrolladores de aplicaciones WEB deberán tener en cuenta las diferencias entre implementaciones o bien utilizar paquetes o frameworks que realicen esta función.

El 25 de febrero de 2008 se publicó la primera versión de la especificación XMLHttpRequest Level 2. Esta nueva especificación, que se inicia antes de haber publicado la versión definitiva de la interfaz, pretende añadir nuevas funciones como: peticiones entre dominios (cross-site), eventos de progreso y manejo de flujos de bytes (streams) tanto para el envío como para la recepción.

XMLHttpRequest es una interfaz para realizar llamadas mediante HTTP, por lo que es recomendable un buen conocimiento de este protocolo. Es importante el manejo correcto de la cache en el servidor HTTP, en los proxy cache intermedios y en el navegador WEB.

La interfaz se implementa en una clase de la que se debe crear una nueva instancia mediante el constructor adecuado. Es posible realizar peticiones síncronas y asíncronas al servidor. Cuando las operaciones son síncronas la ejecución del programa se detiene hasta que se completa la operación. En una llamada asíncrona el flujo de proceso no se detiene a esperar la respuesta sino que esta continúa en segundo plano y se define un manejador de evento que se ejecutará cuando se complete la petición.

Otro elemento importante en la especificación, es el manejo de juegos de caracteres u hojas de códigos. La codificación y decodificación de texto y su la identificación de los juegos de caracteres mediante cabeceras HTTP y tipos MIME. El estándar XMLHttpRequest recomienda UTF-8 para la codificación de cadenas de texto.3

Para determinar la codificación de los datos transmitidos se usa el siguiente algoritmo, utilizando la primera opción que se cumpla:

Si los datos transmitidos son XML o HTML, y así se identifica mediante la correspondiente cabecera Content-Type de HTTP, la codificación se detectará siguiendo las reglas de XML o HTML según corresponda.
Si la cabecera HTTP especifica un tipo MIME mediante Content-Type e identifica un juego de caracteres se utiliza dicho juego de caracteres.
Si los datos enviados especifican un BOM válido, se utilizará la variante UTF determinada por dicho BOM.
Utilizar UTF-8.

Si no se identifica correctamente la codificación, existe el riesgo de que en un sistema en el que se mezclen varias codificaciones puedan producirse errores de visualización de caracteres. Por ejemplo al incorporar funcionalidad AJAX, que por defecto utiliza UTF-8, a una página WEB codificada con ISO 8859-1.

fuente.http://es.wikipedia.org/wiki/XMLHttpRequest

Apple ya compró el dominio iPhone5.com La Organización Mundial para la Propiedad Intelectual (WIPO, por sus siglas en inglés) ha comunicado que ha interrumpido la actividad de iphone5.com, ...
Como resolver la falla cuando Outlook o Twitter no cargan en el navegador, error SSL Los ultimos días, principalmente luego del anuncio de la falla en OpenSSL, algunos usuarios me han pregunta sobre una falla al cargar twitter y outloo...
Ranking de los CMS en la Internet Los sistemas de gestión de contenidos han logrado desde su llegada crear una web más ágil y dinámica, donde los contenidos y diseños de los sites se a...
Apple, ya cuenta con la especificación WiFi 802.11ac Apple podría ser uno de los primeros fabricantes en abrazar la especificación para WiFi 802.11ac, actualmente en desarrollo. La compañía de la manz...
Listado de antivirus vulnerables, sepa cual no debe usar.. Dos investigadores des seguridad de la Universidad de Texas, Suman Jana y Vitaly Shmatikov, han presentado recientemente el informe "Abusing File Proc...
LibreOffice 3.4.5 Con cierto adelanto sobre el calendario inicialmente previsto el equipo de desarrollo de The Document Foundation acaba de lanzar LibreOffice 3.4.5 fin...
Google y la regla de los 100 enlaces Hace varios años que se recomendaba que el número de enlaces por página fuera de menor de 100 debido a ya que como Google solo indexaba 101 kilobytes ...
mysql list tables mysql_list_tables — Lista las tablas en una base de datos MySQL Descripción int mysql_list_tables ( cadena $base_de_datos ) mysql_list_table...
Amazon y Apple, las vendedoras online que más satisfacen En Amazon están de enhorabuena: se dedican a la venta online y son precisamente la empresa de estas características que más ha satisfecho a los client...
En Venezuela el 40% de la población tiene acceso a Internet, Estadisticas del Uso de Internet en Venezuela Según Carlos Jiménez, director de Tendencias Digitales, en 2011 más de 11 millones 600 mil venezolanos usaron internet, lo que se traduce en 40% de la...
Que es el Objeto XMLHttpRequest
Tagged on: