AS3跨域错误

时间:2011-06-17 13:18:32

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

我有一个假设myserver1.com/my.swf的SWF文件,我有一个跨域文件

<?xml version="1.0" ?>
<cross-domain-policy>
<allow-access-from domain="*.imageDomain1.com" />
<allow-access-from domain="*.AnotherimageDomain1.com" />
<allow-access-from domain="*.imageDomain2.com" />
</cross-domain-policy>

ActionScript代码是。

Security.loadPolicyFile("http://myserver1.com/crossdomain.xml");
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;

// The following is working (SESSION 1)
var request:URLRequest = new URLRequest('http://img.imageDomain1.com/firstImage.jpg');
var loader:Loader = new Loader();
loader.load(request, context);

// The following is not working (SESSION 2)
var request1:URLRequest = new URLRequest('http://img.AnotherimageDomain1.com/firstImage.jpg');
var loader1:Loader = new Loader();
loader1.load(request1, context);

我不知道发生了什么事。当我使用Firebug时,swf正在寻找http://img.imageDomain1.com/crossdomain.xml它在那里。但http://img.AnotherimageDomain1.com/crossdomain.xml不存在(我不能在那里放任何corssdomain文件,因为我没有任何访问权限)。

问题是来自(SESSION 1)的图像正在调整大小,而来自(SESSION 2)的图像没有在COMPLETE事件上调整大小。

请帮帮我!!!

1 个答案:

答案 0 :(得分:2)

如果您无法访问http://img.AnotherimageDomain1.com/,那么您将永远无法在其中放置crossdomain.xml。因此可以预期您当前的解决方案将无法应对与沙盒问题。

解决方案是您需要创建proxy 代理应该在http://img.imageDomain1.com/的公共根目录中提供,这是您有权访问的域。

由于代理将与您的应用程序在同一个域中运行,因此它将充当中间人,为您的应用程序提供来自其自身域外的数据,从而有效地绕过沙箱。

请注意,您应该限制您的代理,否则您的网站可能会受到XSS攻击的攻击。<​​/ p>

干杯