基于Flash開發的軟件瀏覽器插件會受到應用沙盒限制,譬如說在本機發布了地圖服務,在flex中使用localhost獲取地圖時一切正常,但改成IP地址后就會報安全沙箱錯誤。
??? Flash Player對訪問外部資源有比較嚴格的限制,因此如果需要訪問跨域的ArcGIS Server服務(比如本地非本機、不同域等),一定要注意Flash的安全策略問題。當在用ArcGIS Flex API的時候出現了安全沙箱錯誤(這個錯誤在調試狀態下一般不會出現,因為IDE已經忽略了安全策略);或者運行的時候出不來地圖,但是在瀏覽器中查看REST服務目錄是正常的,這時候就需要注意是否進行了跨域訪問。
? ??配置服務器允許被Flash進行跨域訪問一般需要在遠程的Web服務器根目錄下放置一個安全策略文件。當我們開發一個ArcGIS Flex API應用,同時它需要訪問跨域的ArcGIS Server的時候,一定要在ArcGIS Server的REST Web根目錄下放置如下名為“crossdomain.xml”的安全策略文件:
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <site-control permitted-cross-domain-policies="all"/> <allow-access-from domain="*"/> </cross-domain-policy>
?以上的安全策略是允許所有的連接,這個安全策略文件需要被放到特定的位置,比如ArcGIS Server for .Net應該是IIS的根目錄(如:C:\Inetpub\wwwroot);ArcGIS Server for Java應該是web_output目錄(如:C:\Program Files\ArcGIS\java\web_output)(在flex項目中的src根目錄中也要放“crossdomain.xml”安全策略文件)。