IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

AmfPhp/SWF à distance


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut AmfPhp/SWF à distance
    Bonjour,
    Voici un problème que je n'arrive pas à solutionner :
    J'ai développé une application en FLASH AS3 qui utilise AMFPHP pour échanger des données avec une base Mysql. J'ai installé et paramétré un serveur WAMP (Apache, php5, mysql). Mon .SWF se trouve dans le répertoire WWW/textoweb du serveur. En localhost, tout se passe bien. Mon appli se lance, et discute sans problème via AMFPHP avec la base Mysql. Lorsque en revanche j'ouvre le serveur (Put Online), et que je tente de me connecter à l'adresse IP en question via une autre machine, ma page web s'affiche bien... mais ! Le SWF se charge, propose à l'utilisateur de se logger... et puis plus rien. Pas de communication (aucun RESULT) avec mon script php.

    J'ai effectué les tests/actions suivantes :

    - un fichier crossdomain.xml à la base du serveur, ainsi que dans le répertoire du swf, dont voici le contenu :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
     <cross-domain-policy>
    	<site-control permitted-cross-domain-policies="all"/>
    	<allow-access-from domain="*" secure="false"/>
    	<allow-access-from domain="62.XX.XX.XX" to-ports="80,843"/> (62.XX...> l'adresse IP externe du serveur, qui est fixe)
    	<allow-access-from domain="localhost" to-ports="80,3306"/>
    	<allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>

    - je me connecte à distance via l'IP du serveur sur le 'browser' d'AmfPhp : Résultat probant, mes services sont actifs, et j'obtiens les bons recordset en interrogeant mes classes.

    - j'ai lancé, toujours à distance, (http://62.XX.XX.XX/textoweb/php/gateway.php) le fichier Gateway, qui s'exécute correctement.

    - sur le routeur (freebox) j'ai ouvert les ports suivants, dirigés vers l'IP interne de la machine (192.168.XX.XX) : le port 80, le port 3306, le port 843.

    - modifié les fichiers de configuration de WAMPSERVER :
    my.ini --> ajouté [mysqld]
    bind-address = 62.XX.XX.XX
    port=3306
    httpd.conf --> Listen 80,ServerName localhost:80,Allow from all pour chaque Deny précédent.
    phpmyadmin.conf ---> <Directory "c:/wamp/apps/phpmyadmin3.3.9/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order Deny,Allow
    Allow from all
    </Directory>
    Je ne trouve pas la solution, je ne comprends pas pourquoi mon swf alors qu'il se lance, que les services amfphp fonctionnent via le browser, ne me retourne aucune valeur lorsqu'il interroge la base depuis un appel distant.

    Pour finir voici un bout de AS3 qui gère la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    private var gateway:String = "http://localhost/textoweb/php/gateway.php";
     
    /* j'ai aussi biensur testé :
    gateway= "php/gateway.php";
    gateway= "http://192.168.XX.XX/textoweb/php/gateway.php";
    gateway= "http://62.XX.XX.XX/textoweb/php/gateway.php";
    mais en vain à distance...alors qu'ils fonctionnent tous en localhost (!)
    */
     
    private var connection:NetConnection;
    private var resLogin,res:Responder;
     
    ...
     
    resLogin = new Responder(onResult, onFault);
    connection = new NetConnection;
    connection.connect(gateway);
     
    connection.call("plateforme.login", resLogin,email_input.text,pass_input.text);
     
    private function onResult(result:Object):void {
    ...
    }
    Si quelqu'un avait une idée du pourquoi de ce blocage, je suis preneur
    Merci.

  2. #2
    Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut
    voilà l'endroit précis où ça bloque, d'après CharlesProxy :



    Donc il semble que flash cherche le crossdomain sur localhost, au lieu de l'adresse IP 62.xx.xx.xx..
    Existe-t-il des instructions AS3 compatibles Flashplayer 10.++ capables d'indiquer le bon chemin ? à savoir http://62.xx.xx.xx/crossdomain.xml ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Security.loadPolicyFile("http://62.xx.xx.xx/crossdomain.xml");
    ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut
    Oui c'est exactement cela, sans oublier d'ajouter
    import flash.system.*;

    Le problème est résolu, en revanche je me demande bien pourquoi il serait nécessaire d'utiliser un crossdomain alors que toute l'appli se situe sur un serveur local

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 73
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import flash.system.Security;
    est suffisant

    Pour ta question, le serveur est bien en localhost, mais tu l'appel par son adresse externe http://62.xx.xx.xx il traite donc la demande comme une requête externe au domain, pour le localhost utilise http://127.0.0.1

Discussions similaires

  1. AMFPHP qui ne fonctionne pas une fois mon swf en ligne
    Par Grimdol dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 24/04/2009, 12h20
  2. executer une application a distance : Sockets ? RPC ? CORBA?
    Par a_hic dans le forum Développement
    Réponses: 5
    Dernier message: 30/05/2006, 13h02
  3. Accès à la base de registre windows à distance
    Par xavame dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/07/2005, 15h23
  4. comment integer une animation swf dans une page
    Par naili dans le forum Intégration
    Réponses: 7
    Dernier message: 18/09/2002, 18h54
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo