2009-11-03 4 views
0

J'ai un service Web fonctionnant sous http://server/abc/service auquel Flash accède à partir d'un domaine différent. Je déployé un fichier de stratégie de plusieurs domaines http://server/abc/crossdomain.xml et fait la charge à l'aide de flash:Flash crossdomain.xml dans un répertoire non-root

flash.system.Security.loadPolicyFile("http://server/abc/crossdomain.xml"); 

dans le constructeur du clip principal. Toutefois, lorsque le Flash démarre, il demande et charge ce fichier (observé dans Firebug), mais il le demande également à la racine du serveur (c'est-à-dire à partir de http://server/crossdomain.xml) qui n'existe pas. Les requêtes HTTP suivantes ne fonctionnent pas en signalant les erreurs de sécurité inter-domaines. Lorsque je mets le fichier de politique à la racine du serveur, tout fonctionne.

Pourquoi demande-t-il le fichier de stratégie à la racine même s'il le charge depuis le sous-répertoire? Pourquoi le fichier de stratégie de sous-répertoire n'est pas suffisant?

Je devrais également noter que les deux fichiers de politique sont chargés avant que toutes les demandes HTTP d'application sont émises.

Répondre

2

Je pense qu'il doit vérifier que le fichier de stratégie principal autorise le fichier de stratégie alternatif à définir des autorisations.

Here's an interesting article with this little tidbit:

Si un client est chargé d'utiliser un fichier de stratégie dans un endroit autre que celui du fichier de stratégie maître, le client doit d'abord vérifier la méta-politique du fichier de stratégie maître pour déterminer si le fichier de stratégie d'origine est autorisé

+0

+1 Merci pour le lien. Je dois admettre que je n'ai pas lu la spécification du fichier de politique inter-domaine. Je lis juste l'aide de Flash qui, je pense, ne le mentionne pas. –

1

Un fichier de stratégie doit se trouver dans le répertoire Web racine sur le serveur. C'est pour s'assurer que quelqu'un qui contrôle peut-être un sous-dossier sur le serveur ne peut pas exécuter une politique que le site "officiel" (par exemple, la racine) ne supporte pas.

Questions connexes