XMLHttpRequest a d'abord été développé par Microsoft, en tant qu'objet ActiveX, pour Internet Explorer 5.0. (septembre 1998). Il a ensuite été repris et implémenté successivement sous Mozilla 1.0 (mai 2002), Safari 1.2 (février 2004), Konqueror 3.4 (mars 2005) puis Opera 8.0 (avril 2005).
En raison de ces implémentations plutôt récentes, l'objet n'est pas supporté par les navigateurs dits de « vieille génération ».
En avril 2006, il a été proposé pour devenir une recommandation du W3C.
L'utilisation de XMLHttpRequest nécessite l'utilisation du langage javascript.
Les navigateurs l'implémentent de différentes façons : ActiveX pour Internet Explorer, objet pour les autres. La création de l'objet se fait donc différemment selon le navigateur. De plus, pour créer l'ActiveX sous Internet Explorer, il est possible de tester plusieurs versions. Toutefois, après la création de l'objet, les méthodes et attributs sont les mêmes pour tous les navigateurs.
Microsoft a été le premier à incorporer (septembre 1998) des fonctionnalités XMLHttp dans son navigateur Internet Explorer (5 à 7) sous forme d'un ActiveX (Internet Explorer < 7) sous le nom MSXML. Les développeurs du projet Mozilla ont alors implémenté leur version de XMLHTTP sous le nom XMLHttpRequest dans la version Mozilla 1.0 (mai 2002). D'autres navigateurs implémenteront XMLHttp : Safari 1.2 (février 2004), Konqueror 3.4 (mars 2005), Opera 8.0 (avril 2005), icab 3.0b352.
Le World Wide Web Consortium essaie alors de standardiser les API en publiant les spécifications de l'API dans sa version 1 sous le nom XMLHttpRequest le 15 avril 2007 et version 2 le 25 février 2008. Ainsi plusieurs implémentations de XMLHttpRequest existent. Pour supporter toutes ces versions une API javascript (AJAX) de haut niveau permet de faire abstraction des différentes implémentations et versions de XMLHttpRequest.
La norme XMLHttpRequest aura un successeur, HMLHttpRequest Level 2 et on envisage de la compléter par l'utilisation d'autres technologies:
- Le W3C propose Access control pour échanger des données avec des serveurs sur des domaines différents,
- Microsoft propose XDomainRequest depuis Internet Explorer 8 qui pourrait remplacer ou compléter XHR selon les cas.