0

这是一个 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>"

但是,我收到此错误:

“错误:[严格] 由于内容类型 'binary/octet-stream' 错误,忽略 my.domainB.com/crossdomain.xml 中的策略文件。请参阅 www.adobe.com/go/strict_policy_files 以解决此问题。”

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

任何帮助表示赞赏。

4

2 回答 2

0

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

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

您是否尝试过更简单的方法?类似于: var request:URLRequest = new URLRequest(result.image); var 内容:加载器 = 新加载器();content.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded); content.load(request, new LoaderContext(true));

于 2010-08-05T03:48:09.607 回答
0

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

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

于 2010-08-05T15:21:45.563 回答