【问题标题】:My swf file in my web server can not load json file from another server我的网络服务器中的 swf 文件无法从另一台服务器加载 json 文件
【发布时间】:2013-06-16 10:12:23
【问题描述】:

我的服务器根目录中有一个名为 MyREOPS.swf 的 swf 文件。并且根目录中有“index.html”,它嵌入了这个 swf。服务器中的 MyREOPS.swf 将链接从 xml 加载到 json 文件中,该 xml 文件也在同一服务器中。然后我的 swf 文件,加载 json 文件,使用它从 xml 中检索到的这个链接。所以,这是我的问题和问题:

问题:

当我在本地电脑上运行 swf 时,它会毫无问题地从外部域 url 加载这个 json 文件,前提是包含 swf 的文件夹具有权限(我通过 http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html 授予权限)。但是,当我通过浏览器在网络服务器中运行 MyREOPS.swf 时,出现此错误:

Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation: http://www.3facts-engineering.com/MyREOPS.swf cannot load data from http://api.video.mail.ru/videos/mail/kulukamuluka/1/19.json.

奇怪的是 swf 文件能够读取 Web 服务器中的 xml。我可以理解这一点,因为它实际上能够看到这个链接:“http://api.video.mail.ru/videos/mail/kulukamuluka/1/19.json”。这仅在那个 xml 中。

swf文件不是通过浏览器下载到用户的电脑,然后执行吗?该 swf 如何读取服务器中的 xml。我的意思是这就是我希望它做的事情。但感觉当它在我的电脑上运行时,该 swf 无法访问该 xml,因为 swf 中 xml 的 url 是相对的,例如“config.xml”。

我希望我能够彻底地表达自己。提前谢谢你。

【问题讨论】:

    标签: actionscript-3 flash-builder flash


    【解决方案1】:

    这是 Flash 运行时实现的一项安全功能。

    Cross-domain policy for Flash movies

    出于安全原因,在网络中播放的 Macromedia Flash 电影 不允许浏览器访问位于确切位置之外的数据 SWF 源自的 web 域。

    当您在本地运行时,您的 SWF 正在 Flash Projector 中执行;因此,其操作方式与嵌入您的网站时不同。

    在您要连接的站点上,创建一个 crossdomain.xml 文件,如下所示:

    http://example.com/crossdomain.xml
    

    在那个crossdomain.xml里面,添加参数,比如:

    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
      <site-control permitted-cross-domain-policies="all"/>
      <allow-access-from domain="*" />
      <allow-access-from domain="*" to-ports="80,443"/>
      <allow-http-request-headers-from domain="*" headers="*" />
    </cross-domain-policy>
    

    【讨论】:

    • 您好,问题是 Sturges 先生,我正试图在内部使用 swf AS3 代码联系“api.video.mail.ru/videos/mail/kulukamuluka/1/19.json”。由于某些原因,我不得不这样做。根据 crossdomain.xml 的工作方式,我认为 xml 必须位于 json 文件所在的域“mail.ru”中。我对吗 ?而我无权实现这一点。
    • 是的,没错。也许您可以联系该网站,要求他们更改政策,因为他们目前阻止此类访问。您唯一的其他选择是使用 ExternalInterface 将 JavaScript 调用从浏览器桥接到 Flash 播放器。
    猜你喜欢
    • 2014-12-08
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    相关资源
    最近更新 更多