2012-11-21 97 views
0

在我的應用程序中,我試圖顯示來自google.com的一些數據。 我的問題是,我一直有這樣的錯誤:從AS3 Flash應用程序訪問www.google.com

Error #2048: Security sandbox violation: https://XXXXX.com/runtime.swf cannot load data from http://www.google.com/finance/company_news?q=null:OZG&output=rss. 

谷歌的crossdomain.xml文件看起來像這樣:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="by-content-type" /> 
</cross-domain-policy> 

我調用頁面在我的AS3代碼那樣:

var hdr:URLRequestHeader = new URLRequestHeader("Content-type", "text/x-cross-domain-policy"); 
var request:URLRequest = new URLRequest(feedURL); 
request.requestHeaders.push(hdr); 
//then load the request with an UrlLoader 

你有什麼想法爲什麼閃光給我這個跨安保的錯誤?

回答

0

我實際上誤解了crossdomain.xml文件的含義。基本上,谷歌的跨域政策文件不允許任何域。

我認爲我的唯一的解決辦法是使用代理...

+0

也許OP可以使用AJAX來加載信息,然後將其發送通過ExternalInterface的閃爍? –

+0

我已經完成了一個代理。使用Ajax時,它通常是同樣的問題,你最終做JSONP等。我懶得處理這些錯誤;) – tibo

0

您可以使用PHP代理,但捲曲必須啓用。 例如:

$gogle = curl_init(); 
curl_setopt($gogle , CURLOPT_URL, $googleurl); 
curl_exec($gogle); 

如果您需要進一步的操作使用CURLOPT_RETURNTRANSFER選項返回的內容作爲一個字符串,而不是將其輸出。

curl_setopt($ch, CURLOPT_RETURNTRANSFER , TRUE); 
$content = curl_exec($ch); 

使用CURLOPT_POSTFIELDS,如果你需要傳遞POST agouments(如:「參數=值& Q =谷歌」)

+0

我知道這種可能性,我正在尋找別的東西。此外,我的後端是Java,所以我的代理使用Java,效率更高;) – tibo