0

我有一个 SWF 文件,假设myserver1.com/my.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 事件上调整大小。

请帮我!!!

4

1 回答 1

2

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

解决方案是您需要创建一个代理
代理应该在http://img.imageDomain1.com/的公共根目录中可用,这是您可以访问的域。

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

请记住,您应该限制您的代理,否则您的网站可能容易受到 XSS 攻击。

干杯

于 2011-06-17T13:33:04.017 回答