2010-02-25 3 views
2

J'ai une application flash assis dans domainA qui doit charger un swf qui provient d'un seau Amazon S3. En charge, j'obtiens l'erreur suivante. "Error #2044: Unhandled securityError:. text= "chargement swf à partir AmazonS3 - politique de domaine croisé

Je mets un fichier crossdomain dans le seau et présumé qui ferait l'affaire. Comment puis-je résoudre ce problème?

+0

Qu'avez-vous dans le 'crossdomain. fichier xml'? –

+0

Autoriser tous les domaines. politique de domaine inter-domaines> Chin

Répondre

9

Vous pouvez accéder à S3 en utilisant le nom du compartiment DNS. Donc, au lieu de s3.amazon.com/bucketname/filename, il s'agit de bucketname.s3.amazon.com/filename. En utilisant cette méthode pour votre fichier crossdomain vous pouvez mettre votre propre fichier crossdomain dans un chemin racine

<allow-access-from domain="bucketname.s3.amazonaws.com" /> 

La meilleure méthode consiste à utiliser des enregistrements CNAME sur votre serveur DNS à falsifier la racine. par exemple.

Créez un enregistrement CNAME sur votre serveur DNS pour pointer bucketname.yourdomain.com à bucketname.s3.amazon.com

Et puis mettre votre fichier crossdomain dans cette racine de seaux

<allow-access-from domain="bucketname.yourdomainname.com" /> 

Et reportez-vous à flasher les fichiers comme bucketname.yourdomainname.com/flash.swf etc

+0

Merci, est allé avec le changement de nom de c - travaillé un régal. – Chin

0

Votre fichier crossdomain doit être sur le serveur avec l'application flash qui est faire le chargement, pas avec les fichiers de son chargement dans Ensuite, vous spécifiez le domaine S3 comme un domaine autorisé

<allow-access-from domain="s3.amazonaws.com" /> 

Edit:... d'accord, je suis officiellement confus

Il semble que JB a raison de dire que je l'ai fait à l'envers. De here:

Chaque fois que Flash Player 7 détecte une hors domaine demande de chargement de données, le joueur tente de trouver un fichier de stratégie sur le serveur à partir duquel il tente de charger des données. Si un fichier de stratégie existe et qu'il accorde l'accès au domaine d'origine du film Flash en faisant la demande , l'opération aboutit.

Cependant, nous faisons cette chose exacte (images de charge dans un composant flash à partir d'un serveur Amazon à distance) sur un de nos sites web client, mais notre fichier crossdomain.xml est à la racine du serveur du Web de chargement Amazon Les compartiments ne contiennent aucun fichier de stratégie.

Alors, comment fonctionne notre site? Selon la documentation, il ne devrait pas!

Edit 2

Selon le commentaire de Wouter, ce que je fais est un cas particulier qui explique pourquoi cela fonctionne pour moi, même si mes fichiers crossdomain sont au mauvais endroit ...

+1

Je suis presque sûr que vous avez ceci en arrière, le fichier crossdomain doit être sur le serveur à partir duquel vous chargez les données, et le domaine spécifié est d'où provient le fichier swf, – jcoder

+0

merci, doit-il être dans la route. Ou puis-je le lancer dans le même dossier que l'application principale? Très apprécié – Chin

+0

Je me demande de quelle façon? – Chin

1

Chargement Les fichiers swf ne sont pas exactement les mêmes que les données de chargement. Vous aurez peut-être besoin de plus que crossdomain.xml. Pour voir où il cherche le fichier crossdomain.xml, je recommande d'utiliser un outil de "reniflage" (comme httpfox) pour voir où Flash Player cherche le fichier.

Pour permettre à des domaines différents d'interagir, vous devez également appeler Security.allowDomain. Voir the adobe docs on cross-scripting pour plus de détails.

Questions connexes