Service Web flex et .net 2.0, comment autoriser l'accès depuis d'autres domaines?
-
03-07-2019 - |
Question
J'ai créé un projet dans Flex Builder avec le type de serveur d'applications défini sur none.
Lors du débogage, je peux accéder au service Web à partir de mon ordinateur local situé sur un site http. : //monsite.com/ws/ws.aspx? wsdl
Lorsque je télécharge l'application flex sur mysite.com/myapp.html, cela fonctionne très bien.
Mais, lorsque je le télécharge sur myapp.mysite.com/myapp.html, il n'accède pas au service Web.
Quelqu'un sait ce que je manque?
Merci
P.S. Le WS a été créé avec VB.net et, lorsque je crée un projet flex avec le type de serveur d’application défini sur .net, il n’accède pas au WS depuis ma machine locale.
c'est mon fichier crossdomain.xml
<?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="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
** Mon hypothèse est qu'il ne s'agit pas d'un problème de flexibilité, mais d'une fonctionnalité de sécurité .net ... que je ne sais pas comment configurer.
.NET n'autorisera pas les applications à l'utiliser en dehors de son propre domaine. **
La solution
Par défaut, Flex n'autorise pas l'accès aux services Web sur des hôtes distants. Ceci est une fonctionnalité de sécurité de Flex. Comme votre application Flex est déployée sur myapp.mysite.com
, son hôte est différent de celui du service situé sur mysite.com
.
Vous pouvez ajouter un crossdomain.xml
sur le site mysite.com. Flex vérifiera si le service autorise l'accès à partir de différents domaines. Le fichier crossdomain.xml
doit être situé à la racine Web du domaine ( mysite.com/crossdomain.xml
). J'ai utilisé le contenu suivant pour permettre l'utilisation du débogage. Notez que cela permet toute utilisation, donc si vous voulez restreindre l’utilisation en production, vous devez le modifier plus tard.
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Plus d'informations dans la documentation Flex , en particulier le article de la base de connaissances .
Autres conseils
Essayez de vérifier les demandes faites avec Tamper Data (extension à Firefox). Vérifiez que l'application trouve le fichier crossdomain.xml. Si le chemin est désactivé, c'est votre problème.