需要在服务器上安装SWF,而在另一台服务器上安装数据

时间:2012-03-29 19:57:49

标签: actionscript-3 flash cross-domain crossdomain.xml cross-domain-policy

我需要在“xx.com”服务器上托管我的全Flash SWF网站。但是所有图形和声音都必须从“yy.com”服务器上加载。

在我的AS3代码中,所有数据都由绝对地址加载,例如:

http://yy.com/file1.jpg
http://yy.com/file2.jpg

如果我在本地运行swf,无论是在Flash创作工具中,还是在本地.html文件中,或者通过双击swf,它都可以正常运行。所有数据都从“yy.com”下载,网站显示正确。

如果我在“xx.com”上传swf并将其加载到那里,它将无效。

我创建了以下 crossdomain.xml 文件

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" />
</cross-domain-policy> 

并上传到

http://yy.com/crossdomain.xml

结果很奇怪:似乎开始从“yy.com”加载1-2张图片,但随后它停止了。无论是否使用 crossdomain.xml 文件,都会发生此行为。

我想以某种方式实现的目标是什么?我的问题是xx.com的空间非常有限,所以我可以上传swf和/或html,但不能上传实际的数据(很多MB)。

3 个答案:

答案 0 :(得分:1)

尝试将此作为您的crossdomain.xml文件。这是我使用的那个,它一直对我有用。它有来自节点

的额外allow-http-request-headers
<?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-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

答案 1 :(得分:1)

确保在swf的

中设置允许所有内容
Security.allowDomain("*");

答案 2 :(得分:0)

解决方法是将LoaderContext添加到 Loader 对象的加载函数中,如下所示:

context = new LoaderContext(true);
loader.load( new URLRequest(name),  context );

只有这时才检查 crossdomain.xml 文件。