2

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

问题 :

当我在本地电脑上运行 swf 时,它会毫无问题地从外部域 url 加载这个 json 文件,前提是包含 swf 的文件夹具有权限(我通过http://www.macromedia.com/support/documentation/授予权限zh/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" 。

我希望我能够彻底地表达自己。先感谢您。

4

1 回答 1

1

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

Flash 电影的跨域策略

出于安全原因,不允许在 Web 浏览器中播放的 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>
于 2013-06-20T03:43:27.080 回答