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