2

我有一台从亚马逊S3服务器中提取内容的swf one one服务器。我已经建立了,就目前而言,通用的跨域策略以允许所有域的访问:AS3 LoadPolicyFile函数是否也适用于远程swfs?

在包含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服务器的主权财富基金,当它试图这样做,它抛出这个异常:

SecurityError: Error #2121: Security sandbox violation: Loader.content: s3.amazonaws.com/bucket_name/swfs/foo.swf cannot access s3.amazonaws.com/bucket_name/data/swfs/bar.swf. This may be worked around by calling Security.allowDomain.

我想这是因为远程SWF可能包含恶意可执行代码。我是否真的需要将allowDomain设置为某些东西,或者是否有其他更正确的方法来允许我的swf加载其他远程swfs?

+0

你尝试调用Security.allowDomain ...?正如错误所表明的那样,这是正确的做法。 – 2012-03-03 11:38:44

回答

0

我在这里回答了一个类似的问题:

https://stackoverflow.com/a/9547996/579230

另外,如果你crossdomain.xml到位,你可以做loaderContext.checkPolicyFile = true,而不是明确的加载文件。

+0

它们是否被认为位于不同的域上,因为主要的swf嵌入在服务器a的页面中?因为实际上主要的瑞士法郎和瑞士法郎主要的瑞士法郎试图加载来自我的S3桶。只是主swf通过swfobject插入到不同服务器的页面中。 – keybored 2012-03-03 19:43:37

相关问题