Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

1nov/090

Flex RSL – Utilisation de RSL Cross-Domain

Dans l'article précédent, on a vu comment utiliser les RSL standard Flex. Les RSL cross-domain sont des RSL standard (c'est-à-dire une librairie de composants) sauf qu'il sont accessibles depuis plusieurs domaines / sous-domaines. C'est pourquoi, à la fois au moment de la compilation et du déploiement, vous devrez spécifier un fichier cross-domain. Le processus de création du SWC n'est pas différent, sauf que vous devez créer une fichier de security policy crossdomain.xml avec le fichier SWC.

Au moment de la compilation, vous devrez passez l'emplacement du fichier de cross-domain ainsi que l'emplacement du "failover" RSL. C'est-à-dire l'emplacement du RSL à charger si l'accès au domaine échoue. Ces arguments sont passés en tant que paramètres de lignes de commande ou sont spécifiés dans la configuration XML passée au compilateur. Voici à quoi ressemble le code:

mxmlc -runtime-shared-library-path=
pathTo/sharedLibrary.swc,
pathTo/library.swf,
pathTo/crossdomain.xml,
pathTo/failoverLibrary.swf,
FlexApplication.mxml

Le chemin peut être relatif ou absolu (URL complète). Le chemin vers le fichier crossdomain.xml doit être spécifié par une URL absolue car il doit être accessible depuis plusieurs domaines.

Voici les mêmes informations mais dans le fichier de configuration de compilation XML (flex-config.xml):

<runtime-shared-library-path>
<path-element>pathTo/sharedLibrary.swc</path-element>
<rsl-url>pathTo/library.swf</rsl-url>
<policy-file-url>pathTo/crossdomain.xml</rsl-url>
<failover-url>pathTo/failoverLibrary.swf</failover-url>
</runtime-shared-library-path>

Vous devrez bien sûr faire un upload du fichier crossdomain.xml sur le serveur du domaine que vous souhaitez interroger.

Remplis sous: RSL Aucun commentaire
12oct/098

Flex Modules – Chargement de Modules depuis des serveurs différents (allowDomain)

Un module Flex est un fichier SWF que l'on peut charger dans une application mère. Si vous charger un module en ligne qui se trouve sur le même serveur que l'application principale, vous n'aurez aucun problème. Cependant, pour charger un module depuis un autre serveur, vous devez indiquer au module et à l'application, les domaines auxquels ils peuvent accéder.

Permettre l'accès entre les domaines

  1. Dans votre application mère, vous devez appeler la méthode allowDomain() et spécifier un domaine cible depuis lequel vous allez charger votre module. Faîtes bien cette étape au moment de l'évènement preinitialize de votre application pour vous assurer que l'application est bien en place avant le chargement du module.
  2. Dans le fichier cross-domain.xml du serveur distant où se trouve votre moule, ajoutez une entrée qui spécifie le serveur sur lequel l'application à charger se trouve.
  3. Chargez le fichier cross-domain du serveur distant lors du preinitialize de votre application.
  4. Dans le module chargé, appelez la méthode allowDomain() pour qu'il puisse communiquer avec l'application que le charge.

L'exemple suivant montre la méthode init() de l'application mère:

public function setup():void {
 Security.allowDomain("remoteservername");
 Security.loadPolicyFile("http://remoteservername/crossdomain.xml");
 var request:URLRequest = new URLRequest("http://remoteservername/crossdomain.xml");
 var loader:URLLoader = new URLLoader();
 loader.load(request);
}

Le code suivant montre la méthode init() du module chargé:

public function initMod():void {
 Security.allowDomain("loaderservername");
}

Et voici le fichier crossdomain.xml à placer à la base du serveur distant:

<!-- crossdomain.xml file located at the root of the server -->
<cross-domain-policy>
 <allow-access-from domain="loaderservername" to-ports="*"/>
</cross-domain-policy>
Remplis sous: Modules 8 Commentaires
6août/085

Création d'Applications Flex – Flash Player Security (crossdomain)

Flash Player applique des règles de sécurité pour l'accès à la données depuis une application. Les applications Flex peuvent accéder toutes les sources de données qui sont sur le même domaine que le SWF. Par exemple, si le SWF est déployé sur www.exemple.com, il peut accéder à un webservice qui est déployé sur www.exemple.com.
Cependant, l'accès aux données sur différents domaines est interdit par le Flash Player, sauf si le domaine lui donne la permission explicite. Les règles de sécurité de Flash Player interdisent l'accès à la donnée si les domaines ne correspondent pas exactement, y compris les sous-domaines. Cela veut dire qu'un SWF déployé sur www.exemple.com ne peut pas accéder les données de test.exemple.com ou même exemple.com sauf si le serveur lui donne l'accès.
Pour que le serveur donne l'accès aux données, on utilise un fichier appelé cross-domain.