Flex安全沙箱問題解決方法詳解
本文和大家重點討論一下Flex安全沙箱問題的解決,主要介紹一下跨域文件讀取和Scoket沙箱兩部分內容,希望本文的介紹對你的學習有所幫助。
關于Flex安全沙箱問題的解決
最近遇到了Flex安全沙箱問題,找了很多資料發現不是都是和我,我的程序需要socket連接,而大多數講的都是跨域文件讀取的。我先把兩種方法都總結出來:
跨域文件讀取
方法一:在目標服務器上布署crossdomain.xml文件(我用的此方法很管用,放上就沒問題了)需要遠程服務根目錄定義有crossdomain.xml文件,如下:
- <?xmlversionxmlversion="1.0"encoding="UTF-8"?>
- <cross-domain-policy>
- <allow-access-fromdomainallow-access-fromdomain="*"/>
- </cross-domain-policy>
方法二:使用代理,把Flex要訪問的遠程文件通過asp,php,jsp等腳本讀取到本地,然后再由Flex去訪問;
方法三:使用Adobeflashplayer9打開程序后,點擊菜單欄中文件->創建播放器...即生成exe文件,運行exe文件即可突破安全限制;
方法四:
1、找到這個文件夾:c:\DocumentsandSettings\<UserName>\ApplicationData\Macromedia\FlashPlayer\#Security
2、在其下建立一個名為"FlashPlayerTrust"的文件夾
3、在"FlashPlayerTrust"文件夾下新建一TXT文件,內容如下:c:\d:\e:\f:\
4、將該txt文件命名為:"myTrustFiles.cfg"再打開你硬盤里的SWF文件,就不會出現那個煩人的安全設置提示窗口了!
方法五:用HttpService它默認是有Proxy的,需要配置Flex-config.xml,里面有一段:
- <http-service-proxy><whitelist>………………</whitelist></http-service-proxy>
這個是白名單,一般情況下是注釋掉的,也就是默認只有本地的http://{localserver}/*和https://{localserver}/*可以訪問。其他的需要在Flex-config.xml里的自行修改成需要的就可以了。
訪問本地自然不會跨域,不過你肯定訪問局域網其他機器了,所以是依照白名單規則,屬于跨域
Socket沙箱問題
再來看一下Flex安全沙箱中Socket沙箱問題,在Flex中使用Socket進行通信時,也會受到Flash9的新安全策略的困擾.解決方法不能像在Web服務器中布置一個crossdomain.xml來解決,或是在服務器上專門開啟843端口來提供安全策略.有一種方法就是在接收到客戶端的連接后,向其發送安全策略。
比如我是用JAVA來開發,客戶端的Flex會先搜索同域,及服務器的843口,看是否能得到安全策略,這時候Socket是先建立好的,可以在接收到Socket,即Accept事件發生是,馬上向其發送策略串,否則客戶端就會因為安全策略不過關,于斷開,如果成功獲取策略,則客戶端將斷掉先前的那次Socket,再真正進行程序中你要求的Socket連接請求.
【編輯推薦】
- 解析Flex安全沙箱五大解決方法
- Flex安全沙箱問題解決方法
- 學習筆記 Flex安全沙箱概述
- FlexBuilder3.0與Eclipse3.4的完美結合
- Flex內存泄露解決方法和內存釋放優化原則