【问题标题】:loading swf from AmazonS3 - crossdomain policy从 AmazonS3 加载 swf - 跨域策略
【发布时间】:2010-02-25 09:20:06
【问题描述】:

我有一个位于 domainA 中的 flash 应用程序,它需要加载来自 Amazon S3 存储桶的 swf。 加载时出现以下错误。 "Error #2044: Unhandled securityError:. text="

我已经在存储桶中放置了一个跨域文件,并认为这样可以解决问题。 我该如何解决这个问题?

【问题讨论】:

  • crossdomain.xml 文件中有什么内容?
  • 允许所有域。 cross-domain-policy>

标签: apache-flex actionscript-3 flash crossdomain.xml


【解决方案1】:

您可以使用存储桶名称 DNS 访问 S3。因此,不是 s3.amazon.com/bucketname/filename,而是 bucketname.s3.amazon.com/filename。使用这种方法你可以将自己的跨域文件放在根路径中

<allow-access-from domain="bucketname.s3.amazonaws.com" />

更好的方法是使用 DNS 服务器上的 CNAME 记录来伪造跨域文件的根目录。例如

在您的 DNS 服务器上创建 CNAME 记录以将 bucketname.yourdomainname.com 指向 bucketname.s3.amazon.com

然后将您的跨域文件放在该存储桶的根目录中

<allow-access-from domain="bucketname.yourdomainname.com" />

并将闪存文件称为 bucketname.yourdomainname.com/flash.swf 等

【讨论】:

    【解决方案2】:

    加载 swf 文件与加载数据并不完全相同。因此,您可能需要的不仅仅是 crossdomain.xml。要查看它在哪里寻找 crossdomain.xml 文件,我建议使用“嗅探”工具(如 httpfox)来查看 Flash Player 在哪里寻找文件。

    要让不同域的swf进行交互,还需要调用Security.allowDomain。详情请见the adobe docs on cross-scripting

    【讨论】:

      【解决方案3】:

      您的跨域文件需要与正在执行加载的 Flash 应用程序一起位于服务器上,而不是与加载它的文件一起位于服务器上。然后您将 S3 域指定为允许的域。

      <allow-access-from domain="s3.amazonaws.com" />
      

      编辑:好的,我很困惑。

      看来 JB 对我的看法是正确的。来自here

      每当 Flash Player 7 检测到 域外数据加载请求, 播放器试图找到一个策略文件 在它尝试的服务器上 加载数据。如果存在策略文件 它授予对源的访问权限 Flash 电影制作的域 请求,则操作成功。

      但是,我们在我们的一个客户端网站上执行此操作(从远程 Amazon 服务器将图像加载到 Flash 组件中),但我们的 crossdomain.xml 文件位于加载 Web 服务器的根目录中 - 亚马逊存储桶不包含任何策略文件。

      那么我们的网站是如何运作的呢?根据文档,它不应该!

      编辑 2

      根据 Wouter 的评论,我正在做的是一个特殊情况,它解释了为什么它对我有用,即使我的跨域文件位于错误的位置...

      【讨论】:

      • 我很确定你已经把它弄反了,跨域文件需要在你从中加载数据的服务器上,并且指定的域是 swf 文件的来源,
      • 谢谢,这需要在路线中吗?或者我可以将它放在与主应用程序相同的文件夹中吗?非常感谢
      • 它需要在站点根 AFAIK 中。
      • @JB 如果crossdomain.xml 文件位于要加载资产的远程服务器上,那么由于同样的安全限制,加载的 SWF 永远无法访问它。跨度>
      • 图像是 Flash Player 中的一种特殊情况:您可以显示不同域的图像(即使没有 crossdomain.xml),但不能访问其中的位图数据。 (这在livedocs.adobe.com/flex/3/langref/mx/controls/Image.html 提到)
      猜你喜欢
      • 2011-02-20
      • 2013-08-02
      • 2013-12-08
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多