【问题标题】:Flash Security.AllowDomain()Flash Security.AllowDomain()
【发布时间】:2010-04-16 14:27:13
【问题描述】:

我有一个 Flash 电影,从外部 URL 加载数据。实际上,它是横幅内的 RSS 阅读器。

当 Flash 影片和数据 URL 位于同一个域中时,一切都会完美运行。但是,如果 Flash 电影位于另一个域中,则 Flash 安全性会发挥作用。

手册上说我可以通过 Security.AllowDomain() 允许域

system.Security.allowDomain("http://www.mydomain.abc/")
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("http://www.mydomain.abc/content.php");

但是当我将 .swf 嵌入 HTML 页面时,数据不会加载。任何提示如何调试或解决这个问题?

【问题讨论】:

    标签: flash security flash-cs3


    【解决方案1】:

    我认为您误解了该方法的目的。如the docs: 比如说allowDomain:

    让 SWF 文件中的文件被识别 域访问对象和变量 在 SWF 文件中包含 allowDomain() 调用。

    [...]

    通过调用 Security.allowDomain("siteA.com"), siteB.swf 授予 siteA.swf 权限 编写脚本。

    因此,您进行的调用允许 www.mydomain.abc 上的 swf 文件使用调用编写 swf。你基本上是在说,“我相信他们会正确地使用我。”它不允许您做您想做的事情(从该域加载资源)。​​

    让客户端代码以您请求的方式简单地要求绕过跨域安全性是没有意义的。如果您要做的只是问,为什么还要先制定规则?

    要执行您想要的操作,您可以使用 www.mydomain.abc 上的 crossdomain.xml 文件或服务器端代理。本质上,crossdomain.xml 文件将包含如下一行:

    <allow-access-from domain="www.yourswfdomain.com" />
    

    ,其中 www.yourswfdomain.com 是 swf 文件的域。显然,这个解决方案需要 www.mydomain.abc 的支持。

    雅虎有关于setting up 一个服务器端代理的信息。它针对的是 XMLHttpRequest,但同样的原则也适用于 Flash。

    【讨论】:

    • 从 AS3 文档中并没有立即明确,但是当来自一个域的 HTML/JS 文件试图调用从不同域嵌入的 swf 中的 AS3 函数时,还需要使用 Security.allowDomain。跨度>
    【解决方案2】:
    system.Security.allowDomain("www.mydomain.abc")
    

    不要加http://,是域名,不是网址。

    【讨论】:

    • 是域,所以Security.allowDomain("*.mydomain.abc")是正确的,不是www.mydomain.abc,是HOST记录。
    【解决方案3】:

    修复它。 Adobe Docs 解释了在 mydomain.abc 的根目录中创建一个名为 crossdomain.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="www.domain-of-swf.com" />
    </cross-domain-policy>
    

    不要使用 &lt;allow-access-from domain="*" /&gt;,因为这将允许 Internet 上的任何 SWF 代表您的用户调用您的域,并将所有 cookie 附加到请求中。这将泄漏私人数据,除非您的域不存储此类数据或不使用 cookie/HTTP 身份验证。

    【讨论】:

    • 这允许所有域,不推荐。只允许有需要的域。
    猜你喜欢
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2011-07-03
    相关资源
    最近更新 更多