Bonjour à tous,
Bien que le sujet ait déjà été abordé dans d’autres posts, j’ai bien suivi les tutos à ce sujet mais je n’ai toujours pas de solution…
Je vous explique mon problème :
Je suis en train de développer un petit chat pour mon site web, dont le client (en flash) se connectera à un serveur distant via XMLSocket.
Le programme « serveur » et le client (SWF) ne sont pas hébergés sur le même domaine.
En local, la connexion se fait bien, mais une fois le swf uploadé chez mon hebergeur, il n’arrive pas à se connecter au serveur (hébergé chez moi).
J’essaie donc de contourner ce problème de sécurité en utilisant un crossdomain.xml chargé avec System.security.loadPolicyFile(), mais ça ne fonctionne toujours pas, j’ai du oublié quelque chose…
Voici ma config :
Le client (swf) se trouve chez mon hebergeur qu’on appellera http://mon-hebergeur.com
Le serveur se trouve sur un poste chez moi. IP local 192.XXX.XXX.XXX
Il écoute sur le port 18000.
Sur ce poste, je fais tourner également un serveur apache sur le port 81, et je place un crossdomain.xml à la racine du site.
Comme j'ai déjà du mal, je ne met pas de restriction de domaine :
Il est donc accessible en local avec http://192.XXX.XXX.XXX:81/crossdomain.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <cross-domain-policy> <allow-access-from domain="*" to-ports="18000"/> </cross-domain-policy>
Pour ma connexion Internet, je passe par un routeur. IP Internet 83.XXX.XXX.XXX
J’ai donc routé toutes les arrivées sur 83.XXX.XXX.XXX :81, vers 192.XXX.XXX.XXX :81 pour accéder à mon serveur apache (et donc au fichier crossdomain via l’adresse http://83.XXX.XXX.XXX:81/crossdomain.xml), et de la même manière 83.XXX.XXX.XXX :18000, vers 192.XXX.XXX.XXX :18000 pour accéder au serveur de chat.
Côté client, voici ce que j’ai mis dans le SWF :
Et la connexion n’aboutie pas (alors qu’elle marche en local). Par contre, le crossdomain est bien accessible, car il s’affiche en tapant http://81.XXX.XXX.XXX:81/crossdomain.xml
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 // Je veux récupérer mon crossdomain pour autoriser la connexion // socket sur une IP distante System.security.loadPolicyFile("http://83.XXX.XXX.XXX:81/crossdomain.xml"); // ladresse de ma connexion internet, qui sera routée vers mon serveur // local 192.XXX.XXX.XXX var ipserveur = 83.XXX.XXX.XXX var portserveur = 18000 // Je crée mon objet XMLSocket et je me connecte socket = new XMLSocket(); socket.connect(ipserveur, portserveur); socket.onConnect = connexion; // résultat de la connexion function connexion(verifOk ) // ici verifOk vaut false }
Je ne vois pas ce qui coince, ça fait un moment que je cherche mais je tourne en rond.
Pouvez-vous me venir en aide SVP ?
PBR
Partager