Flex LocalConnection – Communication en Cross-Domain
Dans le tutorial Flex sur les LocalConnection simples, nous avons assumé le fait que les deux SWF qui communiquent sont sur le même domaine. Par défaut, Flash Player interdit les LocalConnection entre des SWF chargés depuis des domaines différents. Cependant, vous pouvez explicitement autoriser la communication en cross-domain pour le SWF récepteur.
Il y a deux types de communication cross-domain par une LocalConnection: les domaines connus et les domaines inconnus. La communication avec les domaines connus se présente lorsque les deux SWF communiquant se connaissent entre eux et connaissent les domaines sur lesquels ils sont hébergés. Cependant, il y a bien des cas pour lesquels les domaines ne sont pas connus au moment de la compilation. Par exemple, vous pouvez utiliser une LocalConnection pour créer une application type plug-in qui va interagir avec de nombreuses applications. Dans ce cas, vous ne connaîtrez pas nécessairement tous les domaines possibles à l'avance.
La technique pour les domaines inconnus fonctionne aussi bien pour les domaines connus qu'inconnus mais est plus laxiste. C'est pourquoi il est recommandé d'utiliser la communication avec domaines connus autant que possible.
Pour autoriser la communication cross-domain avec un domaine connu, vous devez faire deux choses:
- Indiquer explicitement à l'objet LocalConnection récepteur d'autoriser les requêtes depuis le domaine contenant le SWF qui envoie
- Préfixer le nom du canal avec le domaine du SWF récepteur.
Utilisez la méthode allowDomain() pour spécifier une liste de tous les domaines à autoriser.
Pour l'exemple suivant, le SWF qui envoie est hébergé sur www.a.com et le SWF récepteur est hébergé sur www.b.com. Le code suivant montre comment envoyer une requête:
var localConnection:LocalConnection = new LocalConnection();
localConnection.send("www.b.com:nomCanal","exempleMethode");
L'exemple suivant contient le code nécessaire pour récupérer une requête avec une application hébergée sur www.a.com:
var receivingLocalConnection:LocalConnection = new LocalConnection();
receivingLocalConnection.allowDomain("www.a.com");
receivingLocalConnection.connect("nomCanal");
receivingLocalConnection.client = this;
Lorsque les domaines sont inconnus, vous pouvez utiliser le joker (*) dans l'appel à allowDomain(), et plutôt que de préfixer le canal avec le domaine qui va recevoir, vous pouvez nommer le canal avec un underscore devant:
// SWF envoyeur
var localConnection:LocalConnection = new LocalConnection();
localConnection.send("_nomCanal","exempleMethode");
// SWF récepteur
var receivingLocalConnection:LocalConnection = new LocalConnection();
receivingLocalConnection.allowDomain("*");
receivingLocalConnection.connect("nomCanal");
receivingLocalConnection.client = this;
Articles similaires
- Flex LocalConnection – Exemple de LocalConnection simple
- Création d'Applications Flex – Flash Player Security (crossdomain)
- Flex Validator: Personnaliser les tooltip d'erreur du EmailValidator
- Flex Shared Object – Partager des SharedObjects entre plusieurs SWF
- Flex URLLoader – Envoyer des requêtes et traiter le résultat (exemple)
Aucun trackbacks pour l'instant






20 mai 2011
Bonjour,
Merci beaucoup pour ce tutoriel bien expliqué/détaillé.
Bon courage.