2009-08-10 105 views
0

我正在用flex創建(桌面)應用程序,但AIR不是一個選項。 (我聽說你需要使用air-installer來播放.exe)我的flex應用程序需要加載一個php生成的xml,但是當你導出一個發佈版本時它必須從swf文件運行。Flex:從Flex swf加載xml

當在本地主機上測試我的flex應用程序時,一切都很好。 XML被加載,我得到的數據。 但是,在我導出發佈版本並啓動.swf後,我得到安全消除(沙箱),稱它無法從網頁加載xml。

有沒有人知道解決這個問題的方法? 有沒有人知道空氣安裝程序是否真的需要啓動.exe? (我只有一個MAC)

回答

2

由於安全限制您正在沙箱中運行的Flash Player。如果啓動應用程序SWF,它將有一個類似file:/// path/to/my/app的URL,它將其放入本地文件sadbox(這是運行swf的最嚴格的地方)。 AIR還爲您提供本地文件系統沙箱,但您可以訪問本地文件並保存到磁盤。如果您從http://example.com開始運行瑞士法郎,則您在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

your'll需要添加一個跨域策略文件,說是柔性的xml其短位被允許談論到遠程實體

1

由於Flex應用程序將從本地文件系統啓動 - 通過file://處理程序或類似於c:\ mypp \ mySwf.swf,實際上有兩個安全組件需要處理:

  • 第一,正如上面的答案中提到的是確保您的PHP頁面可以聯繫。這是通過crossdomain.xml策略文件解決的。

  • 第二個問題源於它運行的方式 - localy。 Flash有四個沙箱(遠程,本地文件系統,本地網絡和可信任)。默認情況下,來自Web的所有swf都放置在遠程沙箱中;那些在本地運行的程序默認爲本地文件系統==沒有網絡調用。

你可能想改變它得到推沙箱。對於本地文件系統與/網絡,你可以簡單地調整在Flex編譯器(例如通過Flex Builder中的選項)的標誌。有一件事需要注意:你只能有一個 - 從本地系統或網絡加載數據。兩者同時無法通過這種方式實現。

把你的瑞士法郎放在可信任的沙箱中,它可以從本地系統和遠程服務器加載數據,這有點棘手 - 你需要安裝程序修改一些配置文件。