2012-03-05 5 views
2

重要な点は2つです。 1 - SWFには、任意のドメインからバイナリデータを読み込む機能が必要です。 2 - SWF cant loadポリシーurlからのXMLファイル、アップロードフォームにより、私はswfファイルのみをアップロードできます。他のデータは含めることができません。Flash AS3 - URLLoaderは異なるドメインのバイナリデータをロードできません

Security.allowDomain("*"); 

をしかし、それは、SWFファイルに対してのみ動作します: 私が試してみました。 私はポリシーXMLファイルを埋め込むことを試みた:

var dataXML:XML = 
<?xml version="1.0"?> 
<!-- http://www.foo.com/crossdomain.xml --> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy>; 

しかし、Security.loadPolicyFile(URL:文字列)のみ、ファイルのURLではなく、データを設定することができます。 私の質問は、SWFに別のファイルを持たないで別のドメインのバイナリファイルを読み込ませるにはどうすればいいですか? はURLLoaderコード:

var request:URLRequest = new URLRequest("http://differentdomain.com/binaryfile.dat"); 
var words:URLLoader = new URLLoader(); 
words.dataFormat = URLLoaderDataFormat.BINARY; 
words.addEventListener(Event.COMPLETE, prepareFile); 
words.addEventListener(IOErrorEvent.IO_ERROR, loadError); 
words.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secureError); 
words.load(request); 

ファイルがSWFファイルとは異なるドメインからである場合、これは、セキュリティエラーを行います。 ありがとうございました。

AS3コードでExternatInterfaceを使用してJavaScriptからバイナリデータを取得することは可能です。 バイナリファイルを読み込むためのクロスブラウザライブラリです:binary reader以降のバージョンjDataView これは誰かを助けることを望みます。 Jonatan Hedborgに感謝の意を表します。

+0

aaa.comからファイルを読み込むには、aaa.com/crossdomain.xmlからcrossdomain.xmlを読み込む必要があります。それ以外の場合は動作しない可能性があります。 –

+0

それは私のための冗談のように見えます。他の言語でもAS3ではなく、任意の場所からバイナリデータをダウンロードできますか? – speedy

+0

セキュリティ上の問題です。それはまさにそれです。その周りの唯一の方法は、あなたのリクエストを中継することができるプロキシサーバーを設定することです。また、例えばsilverlightはクロスドメインローディングに対してより厳しい制限を持っていることに注意してください。したがって、このクォークでは唯一の言語ではありません。 –

答えて

2

あなたは前にこれをお読みください:http://kb2.adobe.com/cps/142/tn_14213.html

そして、あなたはプロキシスクリプトを使用することができ、グーグル/上の検索は、あなたが答えをたくさん見つけることStackOverflowの...

+0

私は読むつもりですが、swf内のスクリプトを意味することを願っています。私はそれを外部のスクリプト/サーバに依存させたくない。また、SWFファイル以外のものはアップロードできません。それ以外の場合、私は同じドメイン上の仲介ダウンロードのPHPファイルを作るだろう。私はなぜプログラマがswfファイルのコードの中でこの設定を設定できないのか理解していませんが、プロキシを使ってトリックを使用する必要がありますか?この設定を埋め込む方法はありませんか? – speedy

+0

あなたは問題を誤解しています、それは設定ではありません。 – soju

0

フラッシュは、最も一般的に使用されるコントロールですHTMLページ。その結果、同じページ上の他のオブジェクト(JavaScriptなど)のセキュリティ制限を守る必要があります。 Webページはsame originセキュリティポリシーを使用します。ページ上のオブジェクトは、現在のページのドメインとは異なるドメインのデータを読み取ることができません。

他のドメインのサーバーがこのようなアクセスを許可するケースがあります。私。 Flashの場合はcrossdomain.xml、Silverlightには同様のポリシーファイルが存在し、JSONPなどのJavaScript用に処理する方法はいくつかあります。

同じ発信元ポリシーをバイパスする方法を誤って使用すると、個人情報が漏洩することが多いコントロールをホストするサイト/ページにcross-site scriptingの問題が発生します。

0

もう少し前に同様の問題に取り組み、UrlStreamを使用して、実行時にターゲットSWFのバイトを読み込むことができました。

要旨:https://gist.github.com/1988661

+0

私はバイナリデータのロードを探していました。私はあなたのスクリプトをテストし、私の場合はうまくいかない。 – speedy

1

はこれを見てください:http://wonderfl.net/c/gJXA

任意のドメインの任意のバイナリデータで動作するいくつかのトリックを、AJAXや独自のプロキシスクリプトを使用する必要なしに(時には、あなたはに可能性を持っていけませんアップロードPHPスクリプト)。

+0

これはURLLoaderではなくLoaderを使用しているので、バイナリデータにアクセスすることはできません(例えばURLを画像URLに変更してみてください)。 –

+0

@Penx URLLoaderをこのスクリプトで使用してバイナリデータを取得することもできます。ある日それを試してみてください。しかし、私は約2 MBのサイズ制限と思う?それとも、私は、私は確信していない制限を行うことからデータをつかんだサーバーでした... –

関連する問題