2010-08-19 6 views
3

J'ai passé pas mal de temps là-dessus alors voici où je suis coincé.Flex crossdomain.xml ne fonctionne pas correctement dans Chrome/Firefox?

J'utilise le lecteur de débogage 10.1 pour obtenir une demande de XMLA de:

http://localhost/dir/blah.swf 

à:

http://localhost/olapbin/msblah.dll 

Cela a bien fonctionné dans le système de fichiers, mais maintenant son sur un serveur web IIS7 .

Après beaucoup de jongler avec le fichier crossdomain.xml je me suis installé sur:

<?xml version="1.0"?> 
<cross-domain-policy> 
<site-control permitted-cross-domain-policies="master-only"/> 
<allow-access-from domain="*" to-ports="*" /> 
<allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

qui est placé dans:

http://localhost/crossdomain.xml 

et lu avec:

Security.loadPolicyFile("http://localhost:80/crossdomain.xml"); 

I configuration du fichier de politique (qui a aidé à trouver le fichier ci-dessus) et sur IE8 tout son travail j Très bien. Je reçois:

OK: Root-level SWF loaded: http://127.0.0.1/akts/ThinSlicerRunner.swf 
OK: Policy file accepted: http://localhost/crossdomain.xml 
OK: Searching for <allow-access-from> in policy files to authorize data loading from resource at http://localhost/olapbin/msmdpump.dll by requestor from http://127.0.0.1/akts/ThinSlicerRunner.swf 
OK: Searching for <allow-http-request-headers-from> in policy files to authorize header sending to URL http://localhost/olapbin/msmdpump.dll by requestor from http://127.0.0.1/akts/ThinSlicerRunner.swf 
OK: Request for resource at http://localhost/olapbin/msmdpump.dll by requestor from http://127.0.0.1/akts/ThinSlicerRunner.swf is permitted due to policy file at http://localhost/crossdomain.xml 

sur Chrome et Firefox je reçois juste:

OK: Root-level SWF loaded: http://localhost/akts/ThinSlicerRunner.swf 
OK: Policy file accepted: http://localhost/crossdomain.xml 

et rien d'autre ... aucune tentative d'autoriser les demandes de HTTPService.

Dans le principal journal des erreurs flex je reçois:

*** Security Sandbox Violation *** 
Connection to 
http://localhost/olapbin/msmdpump.dll 
    halted - not permitted from http://localhost/akts/ThinSlicerRunner.swf 

Ce qui ne semble pas quand je lance la même chose de IE8. Une idée de ce qui se passe ???

AS ... PLUS CODE DEMANDÉ

principale demande d'envoi:

var connection:TsConnection = this.__connection; 
var token:AsyncToken = new AsyncToken(null); 
connection.service.request = this.__curSoapRequest; 
var actualToken:AsyncToken = connection.service.send(); 
__tokenArr.push(actualToken); 
var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler, actualToken); 
__responderArr.push(responder); 
actualToken.addResponder(responder); 

objet Connection: Faits saillants

public function init():void { 

     //Initialize the service object needed to query the server 

    this.__service = new HTTPService; 
    this.__service.method = "POST"; 
    this.__service.contentType = "application/xml"; 
    this.__service.resultFormat = "e4x"; 
    this.__service.headers = getHeaders(); 
    this.__service.url = this.__model.xmlaUrl; 
    this.__initialized = true; 
} 

public function get service():HTTPService { 
    return this.__service; 
} 

private function getHeaders():Object { 
    var o:Object = {}; 
    o["SOAPAction"] = '"urn:schemas-microsoft-com:xml-analysis:Discover"'; 
    o["Content-Type"] = "text/xml"; 
    return o; 
} 

Merci pour votre aide ... Espérons que cela aide les autres quand fixe . ;-)

Shaun http://www.vidgridz.com/

+0

montrez votre code s'il vous plait. – Eugene

+0

plus de code ajouté – blissweb

Répondre

3

Merci pour les réponses de tous. Il a en effet pu être résolu dans le code même si ce n'était pas vraiment un vrai problème de codage.

Voici le fichier de données xml Je lisais les détails de configuration à partir de:

<tsConnection> 
<dataSource>megan</dataSource> 
<database>Adventure Works DW 2008</database>     
<cube>Adventure Works</cube> 
<xmlaUrl><![CDATA[ 
http://localhost/olapbin/msmdpump.dll 
]]></xmlaUrl> 
</tsConnection> 

maintenant sur la configuration « localTrusted » ou « localWithNetworking », ce fonctionnait très bien. Il fonctionne également sur le lecteur Flash IE8 même en "remote".

Cependant, ce qui se passait était que le xmlaUrl était lu comme:

\n\rhttp://localhost/olapbin/msmdpump.dll 

(avec le saut de ligne et un retour chariot au début) C'est est ce qui a été source de confusion le contrôle de domaine et de lancer un bac à sable Violation lors de l'exécution dans le sandbox de sécurité "distant".

Bien sûr, mon xml aurait dû être mieux, et peut-être faire quelques ignorer blanc le traitement de l'espace dans le code, mais encore son certain comportement bizarre, incohérente du code du lecteur Flash dans les navigateurs compatibles Netscape (10.1. X).

Ainsi la finale, la solution de travail ressemble à ceci:

<tsConnection> 
<dataSource>megan</dataSource> 
<database>Adventure Works DW 2008</database>     
<cube>Adventure Works</cube> 
<xmlaUrl><![CDATA[http://localhost/olapbin/msmdpump.dll]]></xmlaUrl> 
</tsConnection> 

Je ne devenu un expert crossdomain.xml dans le processus bien. ;-) Bien que, maintenant je n'ai pas besoin du fichier du tout. Gardez à l'esprit, si vous voyez des violations de Sandbox inexpliquées folles, vérifiez espace blanc dans votre URL de service.

0

Si votre service de back-end de DLL et SWF sont servis à partir du même domaine, il devrait être autorisé. Rien dans le fichier crossdomain.xml ne doit s'appliquer. Vous ne devriez pas avoir à charger le fichier crossdomain manuellement non plus. On dirait que c'est ce que vous essayez de faire.

Je soupçonne que quelque chose d'autre se passe avec votre code.

+0

Je comprends qu'il ne devrait pas avoir besoin d'un fichier crossdomain.xml. Je comprends également qu'il ne devrait pas être chargé manuellement. Cela a toutefois au moins quelque chose qui fonctionne dans IE pour me faire sentir mieux. Quoi qu'il se passe, cela ressemble à de la magie non documentée et indésirable pour moi ;-) J'ai joint plus de code. La prochaine chose à essayer serait un lecteur Flash standard (non-débogage), puis une version plus ancienne. – blissweb

+0

Utilisez-vous Flex? Si oui, pourquoi n'utilisez-vous pas le tag WebService? Il semble que vous êtes des choses dong à la dure. – JeffryHouser