2011年1月31日 星期一

Flex安全沙箱

1.網路訪問的swf檔,Security.sandboxType值為remote,這種情況下通過伺服器上的跨域檔crossdomain.xml判斷是否能夠跨域訪問。比如http://site1/flash1.swf需要訪問http://site2上的資源,則需要在site2伺服器上crossdomain.xml中添加site1的訪問許可。

2.本地訪問的swf檔,Security.sandboxType值為localTrustedlocalWithNetwork localWithFile三者之一。localWithNetwork僅允許訪問網路資源,localWithFile僅允許訪問本地資 源,localTrusted兩者均可。Flash9 Debug版本默認為localTrusted(?待確認),Flash10 Debug版本默認為localWithNetwork

因此在使用Flex進行編譯時,如果訪問本地資源將會產生安全沙箱錯誤。
  • 解決方法一:更改工程屬性,Flex Compiler - > Additional compiler argumentsFlex3),加上"-use-network=false",該選項強制Security.sandboxTypelocalWithFile,帶來的問題是無法訪問網路資源.
  • 解決方法二:更改工程屬性,Run/Debug Settings - > Main ->Url or path to lauch,改為通過Url載入Flash,這樣Security.sandboxTyperemote,本地資源的相對路徑也將作為網路相對路徑進行 訪問。
  • 解決方法三:通過設置Flash Player Trust directory,將swf檔所在目錄放入Flash Player Trust directory中,這樣該swf安全沙箱類型Security.sandboxTypelocalTrusted。(但該方法在Window Server 2003Flash 10 Debug環境下暫未通過)

沒有留言: