【问题标题】:flash and cross domain problemflash 和跨域问题
【发布时间】:2010-11-14 21:45:31
【问题描述】:

我正在运行一个带有用于所有 javascript、图像、swfs 等的外部资产主机的 rails3 项目。这是在一个完全不同的域上。所以知道我尝试使用 swfobject 嵌入一些 SWF。在开发(同一主机)中一切正常,但在生产(不同主机)中它不会启动闪存(萤火虫显示文件已加载但页面上没有任何内容)。我已经将这个 crossdomain.xml 文件放在资产主机的根目录中,但它根本没有改变任何东西。

http://my.host/crossdomain.xml

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

http://my.host/swfs/sound1.swf http://my.host/swfs/video1.swf ...

我该怎么做才能让它发挥作用?我使用的 SWF 不是我开发的,所以我无法更改它们。有些是简单的声音,有些是视频和小型“应用程序”。我不想让 rails 服务于 swfs。

【问题讨论】:

    标签: ruby-on-rails flash cross-domain


    【解决方案1】:

    &lt;allow-access-from domain="*"/&gt; 在最新的 Flash 版本中不起作用,您必须指定确切的域和端口,例如:

    <cross-domain-policy>
       <site-control permitted-cross-domain-policies="all"/>
       <allow-access-from domain="my.host" to-ports="80,8080"/>
    </cross-domain-policy>
    

    当然,您应该将 crossdomain.xml 放入您的 rails 应用程序公共目录的根目录,而不是您的资产主机。

    【讨论】:

    • 好的,谢谢您的提示。我没有测试,因为我把一个特定的域放在里面。
    【解决方案2】:

    您的“内容”主机需要允许从您的“资产”主机访问,而不是相反。

    这是为了保护用户免受跨站点脚本的影响,因此让保存文件的主机决定他们是否可以访问将完全倒退。

    【讨论】:

      【解决方案3】:

      除了上述答案(将 crossdomain.xml 放在请求主机上,而不是资产主机上),我还必须将参数 allowscriptaccess: "always" 添加到 swfobject。否则无法启动 Flash 中的 ExternalInterface。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2011-02-13
        • 2012-04-23
        • 1970-01-01
        相关资源
        最近更新 更多