1.網路訪問的swf檔,Security.sandboxType值為remote,這種情況下通過伺服器上的跨域檔crossdomain.xml判斷是否能夠跨域訪問。比如http://site1/flash1.swf需要訪問http://site2上的資源,則需要在site2伺服器上crossdomain.xml中添加site1的訪問許可。
2.本地訪問的swf檔,Security.sandboxType值為localTrusted、localWithNetwork、 localWithFile三者之一。localWithNetwork僅允許訪問網路資源,localWithFile僅允許訪問本地資 源,localTrusted兩者均可。Flash9 Debug版本默認為localTrusted(?待確認),Flash10 Debug版本默認為localWithNetwork。
因此在使用Flex進行編譯時,如果訪問本地資源將會產生安全沙箱錯誤。
- 解決方法一:更改工程屬性,Flex Compiler - > Additional compiler arguments(Flex3),加上"-use-network=false",該選項強制Security.sandboxType為localWithFile,帶來的問題是無法訪問網路資源.
- 解決方法二:更改工程屬性,Run/Debug Settings - > Main ->Url or path to lauch,改為通過Url載入Flash,這樣Security.sandboxType為remote,本地資源的相對路徑也將作為網路相對路徑進行 訪問。
- 解決方法三:通過設置Flash Player Trust directory,將swf檔所在目錄放入Flash Player Trust directory中,這樣該swf安全沙箱類型Security.sandboxType為localTrusted。(但該方法在Window Server 2003,Flash 10 Debug環境下暫未通過)