如何解决错误:[严格]由于内容类型'二进制/八位字节流'错误而忽略http://my.domain.com/crossdomain.xml上的策略文件?

时间:2010-08-04 17:36:39

标签: flash actionscript-3 actionscript crossdomain.xml

这是一个ActionScript 3问题......

我正在my.domainA上主持一个swf,我正在使用此代码从my.domainB请求jpg(当然我是在阻止域名):

var request:URLRequest = new URLRequest(result.image);
            request.requestHeaders.push(header);
   var context:LoaderContext = new LoaderContext(true, ApplicationDomain.currentDomain, SecurityDomain.currentDomain);
   content = new Loader();
   content.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
   content.load(request, context); 

域B有一个跨域xml文件,如下所示:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
  <cross-domain-policy>
  <allow-access-from domain="*" />
  </cross-domain-policy>"

然而,我收到此错误:

  

“错误:[严格]忽略政策文件   由于内容类型错误导致my.domainB.com/crossdomain.xml   “二进制/八位字节流”。请访问www.adobe.com/go/strict_policy_files   解决了这个问题。“

有谁知道如何解决这个问题?这是针对crosdomain.xml文件或我请求的jpg的错误内容类型吗?

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:0)

第一个猜测是您的跨域文件被拒绝,而不是jpg。

在您的代码中,我们看不到您的标头变量的内容......问题可能来自您的请求处理方式吗?

你尝试过更简单的方法吗? 就像是: var request:URLRequest = new URLRequest(result.image); var content:Loader = new Loader(); content.contentLoaderInfo.addEventListener(Event.COMPLETE,onImageLoaded); content.load(request,new LoaderContext(true));

答案 1 :(得分:0)

我从来没有遇到过这个问题,但是这条消息似乎表明问题在于交叉域文件的内容类型错误(二进制/八位字节流而不是text / xml)。你能检查一下吗?一种简单的方法是使用firebug(或其他一些工具)查看响应头来加载xml。

顺便说一句,您正在加载图像。您可能已经意识到这一点,但以防万一:如果您不需要操纵图像像素数据,您可以在没有交叉域的情况下加载它。只是不要尝试从它创建一个BitmapData图像,也不要访问loader.content。通过加载器对象(即显示对象)将图像放置在显示列表上(或将其删除),并且可以像真实图像的“代理”一样。