2012-03-15 83 views
0

在代码中我使用此之前的URLLoader(SWF将与许多不同的领域中使用,这将及时改变):的Flash AS3 - domain.com/crossdomain.xml和安全性错误

Security.allowDomain("*"); 

http://domain.com/crossdomain.xml ,我有这样的测试:

<?xml version="1.0" ?> 
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="master-only"/> 
    <allow-access-from domain="*"/> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 

我试图访问http://domain.com/files/filename.bin,仍然可以得到安全错误。

好的,我使用crossdomainmaker.com为任何域(用于测试)创建访问权限,并将其直接复制到文件服务器,并测试domain.com/crossdomain.xml是否可访问。我检查了flashlog.txt,发现domain.com/crossdomain.xml已被加载,但会由于其语法错误而被忽略 - 它由crossdomainmaker网站生成,并通过互联网上的规范和示例进行更正,因此我该怎么办?

+0

您是否尝试过使用萤火虫或类似的东西来看看你的SWF试图加载的文件,以及可能弹出的任何错误? – 2012-03-15 11:41:11

+0

由于要加载swf和文件的域不同,URLLoader会得到标准安全错误。但正如我所说,带文件的域具有完全允许的根目录下的crossdomain.xml文件。 – speedy 2012-03-15 12:08:02

+0

不是闪存错误 - 萤火虫中的HTTP错误代码。你可以看到它试图从哪里下载跨域。 – 2012-03-15 12:19:22

回答

1

跨域策略错误总是让人痛苦。你可以发布确切的错误,当你得到它。另外,打开策略日志记录:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ec4.html

这样,您就可以看到文件是否正在被加载,是否被另一个文件取代,或者大致为什么它被拒绝。

与此同时,一些可能有用的链接。

跨域策略规格:http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html(解释了到底发生了什么幕后)

跨域制造商:http://www.crossdomainmaker.com/(易策略文件语法)

跨域打交道时

一些安全提示:http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps.html#articlecontentAdobe_numberedheader_3

顺便说一句,设置“*”的策略是一个巨大的安全漏洞。

+0

好的,我使用http://www.crossdomainmaker.com/为任何域(用于测试)创建访问权限,并将其直接复制到文件服务器,并测试domain.com/crossdomain.xml是否可访问。我检查了flashlog.txt,发现domain.com/crossdomain.xml已被加载,但会由于其语法错误而被忽略 - 它由crossdomainmaker网站生成,并通过互联网上的规范和示例进行更正,因此我该怎么办? – speedy 2012-03-16 05:44:03

+0

它会给你一个语法错误的想法吗?你可以在这里发布吗? – divillysausages 2012-03-16 09:02:56

+0

不,它只是说crossdomain.xml会因为语法错误而被忽略,并且给我提供了Adobe链接到Adobe文档的全部链接(全部以我的母语而非英语)。但我解决了我的问题。问题中发布的crossdomain.xml文件有问题。这个crossdomainmaker现在可以工作,但我必须彻底清除任何缓存,因为重新启动浏览器也不够。我忘了这个小问题。感谢所有链接,这非常有帮助。 – speedy 2012-03-16 10:34:27