2011-11-15 28 views
0

我覺得我有點困惑。我正在從位於domainA.com/firstsubfolder的swf加載swf,位於domainB.com/secondsubfolderAS3和跨域

我總是把crossdomain.xml放在domainA.com/firstsubfolder的「loader」swf附近。

它似乎不起作用,除非我把crossdomain.xml放入加載內容的根目錄domainB.com/crossdomain.xml

我是否總是做錯了,還是因爲某些服務器設置?使用另一個域用於加載的內容,例如另一臺服務器上的domainB_beta.com/secondsubfolder正常工作。

我必須在哪裏去改變這些設置?它取決於服務器設置,還是我做錯了什麼?

這是裝載機ActionScript代碼:

import flash.display.Loader; 
import flash.net.URLRequest; 
import flash.system.Security; 

Security.allowDomain("domainB.com"); 
var context:LoaderContext = new LoaderContext(); 
context.securityDomain = SecurityDomain.currentDomain; 

var loaderMain:Loader = new Loader(); 
loaderMain.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 
loaderMain.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); 
loaderMain.load(new URLRequest('domainB/secondsubfolder/file.swf'),context); 
addChild(loaderMain); 

function errorHandler(event:ErrorEvent):void { 
trace("errorHandler says: " + event); 

} 

回答

2

基於這個例子中,你的跨域文件應該是在http://domainb.com/crossdomain.xml。看起來你在那裏有一個,但這是一種古老的風格。也許嘗試將其升級爲類似:

<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="master-only"/> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

而且,你已經設置的Security.allowDomain,但嘗試添加了Security.allowInsecureDomain爲好。您的連接中未使用HTTPS。

最後,嘗試運行fiddler或charles來觀察網絡流量。查找crossdomain.xml請求並查看回復的是什麼類型的響應。這可以爲這個問題提供一些額外的信息。

+0

thnx ...虐待嘗試和發佈結果! –