我有一个假设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事件上调整大小。
请帮帮我!!!
答案 0 :(得分:2)
如果您无法访问http://img.AnotherimageDomain1.com/,那么您将永远无法在其中放置crossdomain.xml。因此可以预期您当前的解决方案将无法应对与沙盒问题。
解决方案是您需要创建proxy 代理应该在http://img.imageDomain1.com/的公共根目录中提供,这是您有权访问的域。
由于代理将与您的应用程序在同一个域中运行,因此它将充当中间人,为您的应用程序提供来自其自身域外的数据,从而有效地绕过沙箱。
请注意,您应该限制您的代理,否则您的网站可能会受到XSS攻击的攻击。</ p>
干杯