Le cross-domain sur localhost : comment ça marche ?

Avez vous déjà été confrontés à la problématique suivante : récupérer des informations venant d'un autre domaine que celui sur lequel vous vous trouvez. Comment faire? Il existe un moyen : le cross-domain. Qu'est ce que c'est ? Est-il possible de le faire sur un domaine comme localhost ?

Définition

Cross-domain signifie croisement de domaine. C'est un principe qui vise à faire communiquer deux domaines ensemble. Par exemple, monsite.com peut envoyer des données à tonsite.com ou à localhost, tout comme ce dernier peut renvoyer des données à monsite.com.

La plupart des techniques AJAX ne sont pas cross-domain pour des raisons évidentes de sécurité. Pour qu'une application cross-domain fonctionne, il faut que le domaine qui reçoit la requête soit autorisé à la traiter. C'est une mesure de sécurité obligatoire.

 

cross-domaine

 

Techniques utilisées

Ajax

Ajax serait une méthode qui pourrait convenir. L’inconvénient étant que cette méthode n’est supportée que pour IE10 et supérieur, Chrome et Firefox n’ayant aucun problème.

ajax

XMLHttpRequest

XMLHttpRequest semble être la solution par excellence. Néanmoins celle-ci n’est pas supportée par IE8 et IE9.

xmlHttpRequest

XDomainRequest

XDomainRequest est utilisé seulement pour IE8.

XDomainRequest

 Paramètres

Pour utiliser le cross-domaine, le serveur doit autoriser les connexions afin d’exécuter la requête. La réponse quant à elle doit avoir un en-tête précis.

Paramètres serveur

  • Access-Control-Allow-Headers

En-tête utilisé pour la requête :

Origin, X-Requested-With, Content-Type, Accept

  • Access-Control-Allow-Credentials

Permet d’inclure des informations d'identification utilisateurs afin d’effectuer la requête.

  • Access-Control-Allow-Origin

Spécifie le domaine autorisé à faire le cross-domaine. Pour des mesures de sécurité, il est conseillé de bien renseigner ce champ.

  • Access-Control-Allow-Methods

Définit la méthode utilisée pour la requête HTTP. POST sera utilisé.

Exemple d'implémentation IIS

IIS

Paramètres de la réponse

La réponse doit obligatoirement contenir les mêmes paramètres d’en-tête que le serveur.

Particularité

Si l’on veut faire du cross-domaine sur une machine local (localhost), et afin d’avoir un fonctionnement multi-navigateur, il est recommandé d’utiliser l’adresse IP locale au lieu du nom. Ex : http://127.0.0.1:8081/.

Conclusion

La création d’un cross-domain sur localhost nécessite une configuration particulière. L’utilisation de XMLHttpRequest et de XDomainRequest (pour IE8) sera donc recommandée. Nous éviterons dans la mesure du possible la méthode AJAX qui induit trop d’erreurs à son exécution. La construction des en-têtes de réponse a toute son importance, sans quoi aucune réponse ne sera renvoyée. Enfin pour un usage multi-navigateur, et afin de pallier à une sécurité trop élevée d’Internet Explorer ne pas oublier d’utiliser une adresse du type http://127.0.0.1 . Bon test @ tous !!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.