Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.10.2008, 17:33
Oreanor вне форума Посмотреть профиль Отправить личное сообщение для Oreanor Найти все сообщения от Oreanor
  № 1  
Ответить с цитированием
Oreanor

Регистрация: Sep 2004
Сообщений: 159
Отправить сообщение для Oreanor с помощью ICQ
По умолчанию почему getDefinition дает ошибку?

общий вопрос - swf1 из одного домена подгружает swf2 из другого домена с целью вытащить класс. но вместо этого вылетает ошибка:
Код:
SecurityError: Error #2119: Security sandbox violation: caller *swf1* cannot access LoaderInfo.applicationDomain owned by *swf2*.
	at flash.display::LoaderInfo/get applicationDomain()
	at loadtest_fla::MainTimeline/onLoadComplete()
если тестировать swf1 в локале, все работает нормально.

если подробнее, вот код swf1

Код:
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.Security;

Security.loadPolicyFile("http://*домен swf2*/crossdomain.xml");
Security.allowDomain(*домен swf2*);

var loaderContext:LoaderContext = new LoaderContext();
loaderContext.checkPolicyFile = true;
var url:URLRequest = new URLRequest(*путь к swf2*);

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
l.load(url,loaderContext);

function onLoadComplete(e:Event) {
	classFromSwf2 = e.target.applicationDomain.getDefinition("swf2class") as Class;

}
смущает больше всего то, что совсем недавно проблемы такой как будто не было. Что-то изменилось в политике безопасности? может, теперь нельзя вытащить класс из подгружаемого swf?


Последний раз редактировалось Oreanor; 20.10.2008 в 18:12.
Старый 20.10.2008, 17:58
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
crossdomain, allowDomain.

Старый 20.10.2008, 18:12
Oreanor вне форума Посмотреть профиль Отправить личное сообщение для Oreanor Найти все сообщения от Oreanor
  № 3  
Ответить с цитированием
Oreanor

Регистрация: Sep 2004
Сообщений: 159
Отправить сообщение для Oreanor с помощью ICQ
allowDomain в первой swf-ке у меня прописан, crossdomain тоже есть, забыл скопировать.
тупо до безобразия, но не пашет


Последний раз редактировалось Oreanor; 20.10.2008 в 18:22.
Старый 20.10.2008, 18:18
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
allowDomain должен быть вписан в swf2.
Укажите в LoaderContext текущий ApplicationDomain.

Старый 20.10.2008, 18:28
Oreanor вне форума Посмотреть профиль Отправить личное сообщение для Oreanor Найти все сообщения от Oreanor
  № 5  
Ответить с цитированием
Oreanor

Регистрация: Sep 2004
Сообщений: 159
Отправить сообщение для Oreanor с помощью ICQ
добавил в swf1
Код:
loaderContext.applicationDomain=ApplicationDomain.currentDomain;
добавил в swf2
Код:
Security.allowDomain("*");
не помогло


в файле кроссдомена прописано

Код:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" to-ports="*" secure="false"/>
  <site-control permitted-cross-domain-policies="all"/>
</cross-domain-policy>


Последний раз редактировалось Oreanor; 20.10.2008 в 18:31.
Старый 20.10.2008, 18:34
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 6  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
А в свф которую вы подгружаете ничего добавлять не надо.
Главное на сайте где она расположена должен быть
http://www.dnadillo.dn.ua/crossdomain.xml
Код:
var context:LoaderContext = new LoaderContext();
if (Security.sandboxType!='localTrusted') context.securityDomain = SecurityDomain.currentDomain;
trace(Security.sandboxType);
context.applicationDomain = ApplicationDomain.currentDomain;

var ldr:Loader = new Loader();
var urlReq:URLRequest = new URLRequest("http://www.dnadillo.dn.ua/fla/cat.swf");
ldr.load(urlReq,context);
//ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
addChild(ldr);
Хвост дергается программно
http://murmadillo.tut.su/fla/One_cat.swf

http://www.dnadillo.dn.ua/fla/Crossdomain.html


Последний раз редактировалось Alex Lexcuk; 20.10.2008 в 18:46.
Старый 20.10.2008, 18:47
Oreanor вне форума Посмотреть профиль Отправить личное сообщение для Oreanor Найти все сообщения от Oreanor
  № 7  
Ответить с цитированием
Oreanor

Регистрация: Sep 2004
Сообщений: 159
Отправить сообщение для Oreanor с помощью ICQ
Alex Lexcuk, OMG, это оно!!!
вот этой чертовой строчки не хватало:
Код:
context.securityDomain = SecurityDomain.currentDomain;
спасибо огромное всем!

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:16.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.