Dans quel cas AJAX est-il utilisé? Quels sont les avantages et les inconvénients d’AJAX? Qu’est-ce que la communication asynchrone? L’Ajax est-il vraiment plus rapide? Existe-t-il des risques de sécurité? Que signifie sandbox?
Ajax signifie « JavaScript et XML asynchrone » et, via un transfert de données asynchrone, permet une requête HTTP dans une page HTML à l’aide de JavaScript sans recharger complètement la page. Seules les informations requises de manière sélective, c’est-à-dire des parties d’une page HTML ou même des données utilisateur pures, sont rechargées séquentiellement.
Concept de communication asynchrone
Le terme Ajax a été inventé en 2005 par Jesse James Garrett . Ce n’est pas vraiment une nouvelle technologie – Ajax combine diverses idées et techniques connues depuis longtemps pour former un concept de communication sur le Web:
- JavaScript en tant que langage de programmation côté client et en tant qu’interface entre les composants individuels et pour la présentation dynamique du contenu.
- L’objet XMLHttpRequest pour pouvoir échanger des données de manière asynchrone avec le serveur Web (voir le brouillon de travail du W3C: [W3C08]).
- Le modèle d’objet de document (DOM) pour le traitement dynamique ou la représentation des données ou du contenu fourni par le serveur.
- Présentation basée sur (X) HTML.
- En tant que formats de transmission XML, texte brut ou JSON.
Ajax fonctionne de manière très similaire au concept décrit ci-dessus en ce qu’un agent – à savoir le moteur Ajax – est impliqué dans la communication entre le client et le serveur.
Transmission plus rapide sur le Web
En plus de ce médiateur de communication, le moteur Ajax, Ajax rationalise et accélère la communication dans un autre domaine: les applications web classiques basées sur la communication synchrone transmettent des formulaires précédemment remplis par l’utilisateur à un serveur web.
Le serveur Web traite la demande et répond en envoyant au navigateur un site Web nouvellement généré sur la base des données de formulaire précédemment transmises. Le serveur Web crée un nouveau site Web pour chaque demande de l’utilisateur et doit le transmettre, ce qui ralentit l’application Web car elle est bloquée pendant la transmission et le traitement.
Souvent, cependant, seule une partie du site Web devrait changer, par exemple lors du téléchargement d’une image, seule la zone qui affiche l’image doit être rechargée – la navigation et les autres zones de contenu du site Web ne changent pas et ne changent donc pas doivent être transférés à nouveau depuis le serveur Web. C’est exactement ce que le concept Ajax utilise: les applications Ajax envoient des requêtes au serveur qui ne demandent que les données réellement nécessaires. La transmission elle-même a lieu de manière asynchrone à l’aide du moteur Ajax, afin que l’utilisateur puisse continuer à interagir avec le site Web pendant ce temps. Une fois les données chargées, une fonction JavaScript est appelée pour intégrer les données dans le site Web. Cela présente non seulement l’avantage d’une plus grande commodité en raison de l’accélération de l’application Web elle-même, qui doit «attendre» la transmission de plus petites quantités de données. Cela peut également résoudre le problème de l’ordinaireUne application Web sans état peut être contournée, par exemple, les informations de session peuvent être conservées sur plusieurs transactions HTTP.
GoogleMaps et GoogleSuggest utilisent AJAX
Le concept Ajax a attiré l’attention du monde entier grâce à sa mise en œuvre dans plusieurs services Google. Par exemple, vous pouvez naviguer dans GoogleMaps à l’aide d’Ajax. Par exemple, un zoom avant ne recharge pas la page entière, mais uniquement les images sur la carte. Dans GoogleSuggest, un conseil rapide avec la saisie semi-automatique apparaît lorsque vous appuyez sur la barre de recherche. L’astuce rapide est compilée à nouveau en fonction de l’entrée dans le champ de recherche, c’est-à-dire que chaque nouvelle lettre génère une liste d’astuces rapide modifiée. Techniquement, ceci est implémenté par le champ de recherche réagissant à un événement OnChange avec une requête Ajax. Cela ne met à jour que le conseil rapide et non la page entière. Les processus sont si rapides que l’utilisateur a l’impression d’exploiter une application de bureau.
Avantages et inconvénients d’AJAX
Le plus grand avantage du concept Ajax est que seules les données vraiment pertinentes sont transférées, de sorte que les applications Web réagissent plus rapidement aux entrées de l’utilisateur et que le transfert de données redondant est évité, car les données statiques, telles que la structure de base de la page HTML et la navigation , ne change pas ne doit pas être transmis en continu.
Ajax est basé sur des technologies largement prises en charge et – contrairement aux applets Java ou Flash – ne nécessite pas de plug-in de navigateur. Cependant, il peut être désavantageux que la prise en charge de JavaScript – par exemple dans les réseaux d’entreprise – soit souvent désactivée et que tous les navigateurs ne prennent pas en charge JavaScript. Un autre inconvénient est, par exemple, que l’utilisation du bouton de retour du navigateur, qui est conçu pour les requêtes HTTP régulières, ne peut être garantie qu’indirectement.
Contrairement aux applications Web précédentes s’exécutant exclusivement dans le navigateur, certaines parties de l’application peuvent être sous-traitées à un serveur et exécutées là-bas avec Ajax. Cela réduit la quantité de JavaScript à charger et la capacité de traitement est principalement fournie par le serveur et non plus par le client. Cela permet un développement plus efficace des applications basées sur un navigateur et une application Ajax apparaît à l’utilisateur comme une application s’exécutant sur son propre PC.
Un problème général avec les transmissions asynchrones, cependant, est que le processus de transmission est immédiatement interrompu si l’utilisateur déclenche un processus synchrone pendant cela, par exemple en cliquant sur le bouton « Mettre à jour » ou un lien synchronisé sur le site Web. Il peut également être gênant qu’il puisse y avoir un certain intervalle, le temps de latence, entre une requête HTTP du navigateur et la réponse du serveur associé, ce qui peut donner l’impression que l’application réagit lentement. Pour cette raison, un retour visuel est généralement utilisé pour l’utilisateur lors des activités en arrière-plan (par exemple, le symbole d’un sablier).
Risque de sécurité
Le plus gros problème avec la technologie Ajax pour le téléchargement est le comportement du sandboxà partir de JavaScript: pour des raisons de sécurité, JavaScript ne doit avoir accès qu’aux objets du navigateur, il ne peut pas accéder au système de fichiers et ne peut ni lire ni écrire les fichiers locaux. Sans l’autorisation explicite de l’utilisateur, d’autres actions ne sont pas possibles, telles que la lecture des dernières pages Web visitées par l’utilisateur. La «Politique de même origine» stipule également qu’un programme JavaScript chargé à partir d’un serveur Web n’a accès qu’aux propriétés des objets qui proviennent du même emplacement que le JavaScript. « Ceci afin d’empêcher les sites Web douteux d’accéder aux données d’autres fichiers ou sites Web ouverts avec le navigateur. » !!!!! Les applications Web JavaScript n’ont pas accès aux informations telles que le nom d’utilisateur, Mots de passe ou cookies d’autres sites Web visités. Les signatures avec lesquelles le développeur s’identifie promettent la sécurité – une signature ne dit rien sur la confiance et la compétence du développeur.
JavaScript ne peut donc accéder et modifier que les composants du document chargé, réagir aux actions de l’utilisateur ou prendre en charge la gestion des fenêtres du navigateur. Cela signifie que le concept de communication Ajax ne peut pas être utilisé pour le téléchargement réel du fichier. Il ne peut être utilisé que pour afficher et supprimer les images et pour les messages d’erreur.