2009-09-07 5 views
4

J'ai un fla (en utilisant ActionScript 3.0) que je compile dans Flash. J'utilise URLRequest et URLLoader pour accéder à un webservice http.Un SWF (utilisant URLLoader) peut-il accéder au service Web HTTPS?

var loader:URLLoader = new URLLoader();  
var request:URLRequest = new URLRequest("http:test.webservice.com");  
try { 
    loader.load(request); 
} catch (error:Error) { 
    trace("Unable to load requested document."); 
} 

Cela fonctionne bien - si j'essaie d'accéder à une adresse https je reçois

httpStatusHandler: [HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0] 
ioErrorHandler: [IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032: Stream Error. URL: https://test.webservice.com"] 

Comment puis-je récupérer des données à partir d'un service Web https? Le fichier SWF doit-il être hébergé sur une page sécurisée SSL?

Répondre

6

Si vous installez le lecteur de débogage flash, vous verrez probablement ce qui suit dans le journal:

** Security Sandbox Violation *** 
Connection to https://www.example.com/service/ halted - not permitted from http://www.example.com/your.swf 

Error: Request for resource at https://www.example.com/service/ by requestor from http://www.example.com/your.swf is denied due to lack of policy file permissions. 

Par défaut, un swf hébergé dans un http ne peut pas accéder à https --il est considéré comme un domaine différent .

Vous devez configurer le fichier de stratégie crossdomain.xml approprié, en vérifiant que le type de contenu est text/* ou une autre valeur blanche. De plus, vous aurez besoin d'un fichier de méta-règles avec "secure = false", ce qui permettra d'accéder à https depuis http.

<allow-access-from domain="www.example.com" secure="false" /> 

Pour en savoir plus:

Policy file changes in Flash Player 9 and Flash Player 10

2

Vérifiez la stratégie de domaine croisé dans la documentation ActionScript.
http://kb2.adobe.com/cps/142/tn_14213.html

Un serveur sécurisé qui permet d'accéder aux films hébergés via un protocole non sécurisé

Il est déconseillé d'autoriser le contenu HTTP pour accéder au contenu HTTPS. Cette pratique peut compromettre la sécurité offerte par HTTPS. Cependant, il peut arriver que le contenu Flash existant soit autorisé à accéder aux données d'un site HTTPS. Avec Flash Player 7, ce n'est plus autorisé par défaut. Pour autoriser l'accès aux données HTTPS par les films Flash servis via HTTP, utilisez l'attribut sécurisé dans un tag "autoriser l'accès depuis" et définissez-le sur false.

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 


     <cross-domain-policy> 


     <allow-access-from domain="www.company.com" secure="false" /> 


     </cross-domain-policy> 

Il est enregistré en tant que crossdomain.xml et placé sur la racine du site du serveur HTTPS .

+3

Quelques informations supplémentaires, ou même un lien ferait une bien meilleure réponse. – Tomas

Questions connexes