2014-12-04 39 views
1

尝试从SWF下载远程资源时,它首先下载并检查位于Web服务器根目录(或在loadpolicyfile()中指定的位置)的文件crossdomain.xml。我想从SWF内部访问下载的crossdomain.xml文件。这个文件存储在哪里,可以从SWF内访问?是否可以在AS3中查看从SWF下载的crossdomain.xml?

我用这个作为可达性机制:如果的crossdomain.xml文件下载,网络服务器(这我知道要举办一场的crossdomain.xml文件)可达。此Web服务器在其策略文件中可能不允许使用'*',这使我无法简单地请求服务器上其他位置的文件来确定可访问性。

谢谢!

回答

1

拿这个例子加载crossdomain.xml和验证服务器的可达性:

var request:URLRequest = new URLRequest('http://www.fb.com/crossdomain.xml') 

var loader:URLLoader = new URLLoader(request) 
    loader.addEventListener(
     Event.COMPLETE, 
     function(e):void { 
      trace('crossdomain file content : ') 
      trace(loader.data) 
     } 
    ) 
    loader.addEventListener(
     HTTPStatusEvent.HTTP_STATUS, 
     function(e):void { 
      //trace('http status: ' + e.status) 
      if(e.status == 200){ 
       trace('this web server is reachable') 
      } 
     } 
    ) 
    loader.addEventListener(IOErrorEvent.IO_ERROR, function(e){}) 
    loader.load(request) 

例与fb.com:

this web server is reachable 
crossdomain file content : 
<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="master-only" /> 
    <allow-access-from domain="s-static.facebook.com" /> 
    <allow-access-from domain="static.facebook.com" /> 
    <allow-access-from domain="*.static.ak.facebook.com" /> 
    <allow-access-from domain="*.static.ak.fbcdn.com" /> 
    <allow-access-from domain="s-static.ak.fbcdn.net" /> 
    <allow-access-from domain="*.static.ak.fbcdn.net" /> 
    <allow-access-from domain="s-static.ak.facebook.com" /> 
    <allow-access-from domain="www.facebook.com" /> 
    <allow-access-from domain="secure.facebook.com" /> 
    <allow-access-from domain="static.ak.fbcdn.net" /> 
    <allow-access-from domain="www.latest.facebook.com" /> 
    <allow-access-from domain="www.inyour.facebook.com" /> 
    <allow-access-from domain="www.beta.facebook.com" /> 
    <allow-access-from domain="m-static.ak.fbcdn.net" /> 
    <allow-access-from domain="fbstatic-a.akamaihd.net" /> 
    <allow-access-from domain="static.xx.fbcdn.net" /> 
    <allow-access-from domain="z-m-static.xx.fbcdn.net" /> 
    <allow-access-from domain="z-1-static.xx.fbcdn.net" /> 
</cross-domain-policy> 

我希望能帮助你。

+0

你执行了什么浏览器?我曾尝试使用HTTP_STATUS事件,从我所知道的情况来看,浏览器总是返回0状态。 – zretep 2014-12-04 17:16:25

+0

@zretep我在很多浏览器中测试过它:firefox,chrome和opera,我认为0是'HTTPStatusEvent.status'的默认值所以可能是闪存没有加载任何东西作为安全问题,尝试添加一个'SecurityErrorEvent'监听器到你的'URLLoader'。 – akmozo 2014-12-04 17:32:46

+0

@zretep Adob​​e在谈论0:“... HTTPStatusEvent对象不一定表示错误条件;它只是反映网络堆栈提供的HTTP状态代码(如果有的话)某些Flash Player环境可能无法检测HTTP状态码;在这些情况下总是报告状态码0。“ – akmozo 2014-12-04 17:39:59

相关问题