Voici un petit truc qui date un peu mais qui est encore fonctionnel. Depuis l'arrivée de la version 7 du Flash Player (fin de 2003), la sécurité a été améliorée pour faire en sorte que si un élément Flash tente d'accéder à des données se trouvant sur un autre domaine, il affiche une alerte si l'accès n'est pas autorisé par le serveur.
Dans certains cas, c'est pourtant ce qu'on souhaiterait faire. Pour corriger le problème, le serveur doit posséder un fichier nommé crossdomain.xml. Lorsque le document Flash tente d'accéder à une ressource externe, il vérifie si le serveur distant possède ce fichier à la racine (http://www.serveur-distant.com/crossdomain.xml). En cas d'absence, l'alerte apparaît. S'il s'y trouve, il vérifie si le domaine référant est autorisé à accéder à la ressource.
Par exemple, si le fichier crossdomain.xml suivant est déposé à la racine du site www.serveur-distant.com, ça veut dire que seul le domaine www de site-referant-1.com et tous les sous-domaines de site-referant-2.com sont autorisés.
<?xml version="1.0"?>Évidemment, le serveur qui offre le service est le seul en mesure de définir ces droits. Vous pourrez définir votre propre crossdomain.xml si vous voulez que votre serveur soit accessible par les documents Flash hébergés sur des sites externes.
<!DOCTYPE cross-domain-policy
SYSTEM "www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.site-referant-1.com" />
<allow-access-from domain="*.site-referant-2.com" />
</cross-domain-policy>
Quelques conseils :
- On utilise le wildcard allow-access-from domain="*" pour indiquer que tous les domaines peuvent y accéder.
- Si on veut forcer un domaine à accéder à la ressource en HTTPS, on peut ajouter secure="false" dans la balise allow-access-from.