Introduction

Qu’est-ce que le cross-domain ? Un script Javascript est dit cross-domain lorsqu’il est hébergé sur un serveur avec un nom de domaine bien précis et qu’il fait des requêtes HTTP vers d’autres domaines.

Par défaut, ce comportement est interdit par les navigateurs butineurs. Non pas pour pourrir la vie des développeurs, mais pour protéger celle des utilisateurs. Cependant il existe quelques techniques qui permettent de contourner le problème.

Solutions

Le proxy

La première méthode consiste à mettre en place sur son propre serveur un proxy. Le Javascript interroge le proxy qui lui-même va interroger le serveur distant qui peut être sur un autre domaine. Cette solution n’est pas idéale car elle oblige à mettre en place ce fameux proxy. De plus dans le cadre la distribution d’une API Javascript, la technologie utilisée côté serveur par les utilisateurs sur service n’est pas maîtrisée.

Notons tout de même qu’elle a l’avantage de pouvoir mettre en place un système de cache (au niveau du proxy) pour améliorer les performances[1].

Les images invisibles

Cette astuce consiste à ajouter la référence d’une image dans le document HTML dont l’URL pointe vers le serveur distant. Bien entendu cette image est invisible et l’URL pointe vers un service et non vers une image. Si je ne me trompe pas, cette astuce est utilisé par Google Analytics.

La contre-partie est qu’il n’est pas possible de récupérer des informations. Cette méthode a ses limitations puisqu’elle ne sert qu’à envoyer des données à un serveur distant et non à en récupérer.

JSON

Qu’est-ce que JSON ? C’est un format de structure des données. Et il a l’avantage[2] d’utiliser la notation des objets JavaScript.

Cette technique consiste à ajouter la référence d’un script dans le document HTML dont l’URL pointe vers le serveur distant. Le serveur doit alors retourner son résultat sous le format JSON. Ensuite à la réception des données, une fonction de callback Javascript exécute le traitement des informations retournées par le serveur.

Cette solution nécessite que le serveur distant puisse retourner son résultat dans le format JSON. Néanmoins, de plus en plus de services tels que ceux de Yahoo! ou Google proposent de spécifier le format de retour[3] et même la fonction de callback !

Cette méthode possède ses limitations. Cependant, dans le cadre de la mise en place d’un service web avec la mise à disposition d’une API Javascript, cette technique se révèle être terriblement efficace ! Elle permet donc d’envoyer des informations à un serveur distant et de recevoir des donnÃés en retour.

Conclusion

Chaque méthode a ses avantages et ses inconvénients. Tout dépend du contexte. Il faut retenir que pour seulement envoyer des données la méthode des images invisibles suffi. Alors que pour récupérer des informations, il faut utiliser selon les cas un proxy ou JSON.

Notes

[1] Et économiser de la bande passante. 😉

[2] Pour notre problème.

[3] En général XML ou JSON.