2009-08-10 18 views
0

フレックスで(デスクトップ)アプリケーションを作成していますが、AIRはオプションではありません。 (私はあなたが.exeを再生するためにエアーインストーラーが必要だと聞きました)私のフレックスアプリはPHPで生成されたXMLをロードする必要がありますが、リリースビルドをエクスポートするときにswfファイルから実行する必要があります。フレックス:フレックスswfからxmlをロード

私のフレックスアプリケーションをローカルホストでテストするときは、問題ありません。 XMLが読み込まれ、データが取得されます。 しかし、リリースビルドをエクスポートして.swfを起動した後、WebページからXMLを読み込めないという声明(サンドボックス)が表示されます。

誰もがこの問題を回避する方法を知っていますか? 空気のインストーラが.exeを起動するために本当に必要かどうかは誰にも分かりませんか?

答えて

2

に話をすることが許可されていることを言って、クロスドメインポリシーファイルを追加する必要がありyour'll(私はMacのみを持っています)あなたがサンドボックスで実行しているFlash Playerです。アプリケーションSWFを起動すると、file:/// path/to/my/appのようなURLが作成され、ローカルファイルsadbox(swfを実行するのに最も制限的な場所)に配置されます。 AIRはローカルファイルシステムサンドボックスも提供しますが、ローカルファイルにアクセスしてディスクに保存することができます。 http://example.comからswfを実行している場合は、example.comコンテキスト広告に含まれているため、そのドメインからコンテンツを読み込むことができます。別のドメインからコンテンツをロードする必要がある場合は、コンテンツ/サービスが存在する他のドメインにcrossdomain.xmlポリシーファイルが必要です。非常に詳細で

alt text http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security/fig01.gif

This article explains、crossdomain.xmlファイルの概念。ドメインからリソースへの接続を許可する例を次に示します。

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

これはあなたのケースで動作します。

0

XMLのその短いビットがフレックスが原因のセキュリティ制限のために、そのリモートエンティティ

1

Flexアプリケーションはfile://ハンドラまたはc:\ mypp \ mySwf.swfのようにローカルファイルシステムから起動されるため、実際には2つのセキュリティコンポーネントが必要です。

  • 最初の答えは、あなたのPHPページに接続できることを確認しています。これは、crossdomain.xmlポリシーファイルを介して解決されます。

  • 第2の問題は、それが実行される方法に起因します - localy。 Flashには、4つのサンドボックスがあります(リモート、ローカルファイルシステム、ネットワークとローカル、信頼できる)。デフォルトでは、Webからのすべてのswfはリモートサンドボックスに置かれます。ローカルに実行されたものは、local-with-filesystem ==ネットワーク呼び出しなしにデフォルト設定されます。

あなたは、おそらくそれがでプッシュされますサンドボックスを変更したい。あなたは、単に(例えば、Flex Builderのオプションを経由して)Flexコンパイラのフラグを調整することができ、ファイルシステム/ネットワークとローカルのために。ただし、ローカルシステムから、またはネットワークからデータをロードすることもできます。同時に両方ともこのように達成することはできません。

ローカルシステムとリモートサーバーの両方からデータをロードできる信頼できるサンドボックスにswfを置くのはちょっと難しいです。インストーラにいくつかの設定ファイルを変更させる必要があります。

関連する問題