我有一个swf服务器,它从亚马逊的S3服务器中提取内容。目前,我已经建立了一个通用的跨域策略,允许所有域访问:
在包含swf的服务器上:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>在S3服务器上:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only" />
<allow-access-from domain="*" />
<allow-http-request-headers-from domain="*"
headers="SOAPAction" />
</cross-domain-policy>当我的swf正在从S3服务器加载json、xml等文件时,这些文件似乎发挥得很好(在大多数情况下)。它做得不对的是从S3服务器加载swfs,当它试图这样做时,它会抛出这个异常:
错误#2121:安全沙箱违规: s3.amazonaws.com/bucket_name/data/swfs/bar.swf.:s3.amazonaws.com/
_name/swfs/foo.swf无法访问这可以通过调用Security.allowDomain来解决。
我认为这是因为远程swfs可能包含恶意的可执行代码。我是否真的需要将allowDomain设置为某种东西,或者是否有其他“更正确”的方式允许我的swf装载其他远程swf?
发布于 2012-03-03 17:17:32
我在这里回答了一个类似的问题:
https://stackoverflow.com/a/9547996/579230
此外,如果您的crossdomain.xml已经就位,您可以只执行loaderContext.checkPolicyFile = true,而不是显式加载文件。
发布于 2012-05-01 23:27:15
确保使用桶名作为策略文件加载和每个文件/ URL请求的子域。
解决方案:
http://onegiantmedia.com/cross-domain-policy-issues-with-flash-loading-remote-data-from-amazon-s3-cloud-storage
https://stackoverflow.com/questions/9537934
复制相似问题