AS3: нарушение песочницы при попытке загрузить SWF вне сайта - PullRequest
1 голос
/ 17 ноября 2010

Я пытаюсь загрузить SWF, размещенный на Amazon S3 (b.com), в SWF в другом домене (a.com), и он выдает эту ошибку

SecurityError: Error #2121: Security sandbox violation: Loader.content:http://www.a.com/loader.swf cannot accesshttp://b.com/loadee.swf. This may be worked around by calling Security.allowDomain.
at flash.display::Loader/get content()

Оба a.com и b.com имеют файл crossdomain.xml в корне, который выглядит как

<cross-domain-policy>
  <site-control permitted-cross-domain-policies="all"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

SWF, который я пытаюсь загрузить (b.com/loadee.swf), был создан программным обеспечением, поэтому яне могу добавить Security.allowDomain ("*") к нему или что-то в этом роде.

Могу ли я каким-то образом загрузить этот SWF-файл, или я застрял на a.com для размещения всего?Я также хочу, чтобы loader.swf и loadee.swf могли общаться (передавать переменные и выполнять вызовы функций), если это возможно.Это то, что у меня есть в loader.swf

Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://b.com/crossdomain.xml");
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
loaderContext.allowCodeImport = true;
var loader:Loader = new Loader();
loader.load(new URLRequest("http://b.com/loadee.swf"), loaderContext);

Если у кого-то есть какие-либо идеи, я бы очень признателен.

1 Ответ

0 голосов
/ 17 ноября 2010

Если loadee.swf не защищен авторским правом, вы можете добавить к нему байт-коды с помощью FlashM или, если вы были экспертом, вы можете сделать это с помощью любого редактора HEX.

PS: Не забудьте, CrossПолитика домена находится на порту 843.

...