我的服务器根目录中有一个名为MyREOPS.swf的swf文件。并且根目录中有“index.html”嵌入此swf。服务器中的MyREOPS.swf从xml加载链接json文件,xml也在同一服务器中。然后我的swf文件,加载json文件,使用从xml检索的链接。所以,这是我的问题和问题:
问题:
当我在本地电脑上运行swf时,如果包含swf的文件夹具有权限(我通过http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html授予权限),它会从外部域url加载此json文件而不会出现问题。但是,当我通过浏览器在Web服务器中运行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”。
我希望我能够彻底表达自己。提前谢谢。
答案 0 :(得分:1)
这是Flash运行时实现的安全功能。
Cross-domain policy for Flash movies
出于安全考虑,在网络中播放Macromedia Flash电影 浏览器不允许访问精确位置以外的数据 SWF起源的网络域名。
当您在本地运行时,您的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>