解决Flex/Flash跨域访问出现的安全沙箱问题
flash里有著著名的安全沙箱機(jī)制,我們需要用flash實(shí)現(xiàn)跨域訪問遠(yuǎn)程URL時,會遇到下面幾種相關(guān)的安全沙箱問題:
問題1:
Flash/Flex,會涉及到跨域訪問URL的安全性問題,最常見的就是出現(xiàn)" 訪問URL時遇到安全性錯誤",這也是人們以前常說的安全沙箱問題,解決方案是在目標(biāo)域名根目錄加入跨域策略文件crossdomain.xml,例如:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.techmango.com" /> </cross-domain-policy>
這表示目標(biāo)源允許*.techmango.com下的資源訪問該域名下的資源.
問題2:
如果涉及到Socket,跨域策略文件中需要加入to-ports,例如:
<cross-domain-policy>?? <allow-access-from domain="*" to-ports="507" />?? <allow-access-from domain="*.example.com" to-ports="509,516" />?? <allow-access-from domain="*.example1.com" to-ports="517-521" />?? </cross-domain-policy> 這個策略文件是指定允許哪些域的主機(jī)通過那些端口鏈接.
問題3:
如果在訪問Webservice需要用到SOAPHeader驗證,跨域策略文件做相應(yīng)修改,例 如:
<cross-domain-policy>
??? <allow-access-from domain="*.chenfeisoft.com" />
??? <allow-http-request-headers-from domain="*.techmango.com" headers="*"/>
</cross-domain-policy>
否則會出現(xiàn)DefaultHTTP錯誤.
問題4:
跨域訪問第三方組件提供的數(shù)據(jù),如BlazeDS,也會遇到DefaultHTTP錯誤.這需要服務(wù)器及UI端做相應(yīng)配置,例如:
[Service端]
在服務(wù)器端的配置文件中,找到proxy-config.xml文件,里面有一個默認(rèn)的destination節(jié)點(diǎn): <destination id="DefaultHTTP"> </destination>
默認(rèn)代理的destination將轉(zhuǎn)向客戶端指定的URL進(jìn)行請求。首先你必須使用dynamic-url屬性來指定允 許代理的destinations.如下:
把你要訪問的URL都配置到dynamic-url節(jié)點(diǎn)里。
<destination id="DefaultHTTP">
??????? <properties>
??????????????? <dynamic-url>http://cnn.com/*</dynamic-url>
??????????????? <dynamic-url>http://news.yahoo.com/*</dynamic-url>
??????? </properties>
</destination>
修改后,保存。
[UI端]:
為了Flex應(yīng)用能夠訪問代理服務(wù),要確保你的應(yīng)用程序指向正確的service,并設(shè)置useProxy 屬性為ture.如:
<mx:HTTPService url=”http://cnn.com” useProxy=”true” />
<mx:WebService url=”http://cnn.com/api?wsdl” useProxy=”true” />
編譯UI,重新部署。若不能正常讀取RSS的信息,檢查是否設(shè)置了channelSet; channelSet 是HTTPService的屬性,一定要設(shè)置。一般來講HTTPService和RemoteObjcet的channelSet是一樣的。
轉(zhuǎn)載于:https://www.cnblogs.com/techmango/archive/2011/05/20/Solve_Flex_access_URL_encounter_security_error.html
總結(jié)
以上是生活随笔為你收集整理的解决Flex/Flash跨域访问出现的安全沙箱问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mootools系列:打造属于你自己的P
- 下一篇: ACM程序设计大赛