Bonjour,
Développant dans une optique portable, je me suis aperçu qu'IE 8, IE 9 et Opera 10.50 ne semblent pas gérer complètement une équivalence de la fonction XMLHttpRequest level 2 offerte par les autres navigateurs.
En effet, avec ces navigateurs, il est actuellement impossible de faire une requête cross-domain sécurisée depuis une page locale (entendez par-là, enregistrée n'importe où sur le poste client).
Voici le bout de code dont je me suis inspiré:
Démonstration:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <script type='text/JavaScript'> function getXDomainRequest() { var xdr = null; if (window.XDomainRequest) { xdr = new XDomainRequest(); } else if (window.XMLHttpRequest) { xdr = new XMLHttpRequest(); } else { alert("Votre navigateur ne gère pas l'AJAX cross-domain !"); } return xdr; } var xdr = getXDomainRequest(); xdr.onload = function() { alert(xdr.responseText); } xdr.open("GET", "http://www.foxycode.net/dev/ajax/XDomain_1.php"); xdr.send(); </script>
1) Nous allons, tout d'abord nous assurer que ce script tourne bien en ligne. Pour ce faire, si vous avez installé Apache sur votre pc et/ou si vous disposez d'un hébergement, enregistrez ce script dans votre répertoire "www".
Lancez-le (http://localhost/le_nom_que_vous_aurez_donné_au_script.htm) et vous verrez le bien connu Lorem ipsum dans une boîte d'alerte, sous tout navigateur récent supportant la méthode XMLHttpRequest level 2.
2) Nous allons ensuite voir comment ça se passe en local, ouvrez cette page web par un simple double-clic ou par le menu contextuel de votre OS (de manière à ce qu'il ne soit pas ouvert par Apache) et testez sous différents navigateurs.
Vous l'aurez remarqué, seuls IE 8, IE 9 Preview et Opera 10.50 et le supportent pas.
Refus d'accès:
Si l'on prête attention au gestionnaire d'erreurs d'IE 8, on peut y lire que l'accès est refusé, j'ai donc cherché les raisons d'une telle restriction.
Les pistes:
1) Est-ce une question de contrôle de l'accès aux sites ciblés par l'internaute avec un tel script?
Assurément, non, puisque l'administrateur doit ajouter une fonction, côté serveur pour permettre à des scripts de type cross-domain d'y accéder.
De plus, au moyen de cette fonction, cet administrateur peut déterminer l'origine des scripts qui peuvent ou non accéder à son contenu.
2) Est-ce pour protéger les scripts mal sécurisés côté serveur?
Je ne le pense pas, après tout, ce n'est pas le rôle du navigateur, cette responsabilité revient uniquement au webmaster du site concerné.
L'intérêt de ce procédé en natif:
- Cette technique a plusieurs avantages, une opportunité de développer de manière à mettre l'internaute à l'abri des problèmes de sécurité encourus suite à des serveurs web hackés.
- Permettre à l'utilisateur de complètement personnaliser l'interface qu'il utilise pour communiquer avec son site préféré.
- Économiser des ressources serveurs lors de la communication avec ses utilisateurs.
L'appel aux développeurs:
Sachant qu'IE 9 est en cours de création, qu'IE 8 a déjà été modifié concernant cette fonction (il peut donc l'être à nouveau) et qu'Opera n'en restera assurément pas à la version 10.50, je poste cette actualité dans l'espoir qu'elle parvienne jusqu'à leurs développeurs.
EDIT: Suite à l'avis des responsables de Developpez.net, ce topic a été remanié et n'a nullement pour but de faire de l'auto-promotion mais bien de signaler un problème actuel entravant l'évolution du web.
Si vous trouvez que la résolution de ce problème peut apporter un plus au web, je vous invite à faire suivre cette news et/ou m'indiquer comment je puis me faire entendre au mieux.
Partager