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

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

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

Регистрация: Jun 2011
Сообщений: 91
По умолчанию crossdomain: расставим точки над i

Добрый день.
Промучавшись два дня, с нарушениями песочницы, решил вопрос по другому, но теперь хотел вернуться к этому вопросу и понять в чем соль.
Я перерыл всю кирупу и весь флэшер, ничего не помогло решить вопрос.
Решил разбираться фундаментально.

В общем ситуация такова, есть swf1 который загружен на сервер и swf2 который находится на другом сервере, который загружается в swf1.

В идеале конечно было бы получить готовый код, для запуска swf как локально так и с сервера, загрузки в себя swf2 , получения классов swf2, но так как таких добрых людей наверное нет(goodGuy камень в ваш огород ), начну издалека(упрощаем задачу) :

Информация с сайта Adobe:

Вот пример проверки наличия файла политики при загрузке SWF-файла из другого домена в целях размещения файла в той же изолированной программной среде, что и объект Loader. Кроме того, этот код добавляет классы в загруженном SWF-файле в тот же домен приложения, что и у объекта Loader:

Код AS3:
var context:LoaderContext = new LoaderContext(); 
context.securityDomain = SecurityDomain.currentDomain; 
context.applicationDomain = ApplicationDomain.currentDomain; 
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf"); 
var ldr:Loader = new Loader(); 
ldr.load(urlReq, context);
Результат: [SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Security sandbox violation ....

Кто-нибудь поможет ?


Итак на данный момент Благодаря этому блогу:
http://www.bigspaceship.com/blog/lab...-errors-oh-my/

Имеем понимание как определить, откуда запущена флэшка:

Код AS3:
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadComplete_handler);
if(Security.sandboxType == Security.REMOTE){
	var context:LoaderContext = new LoaderContext();
	context.securityDomain = SecurityDomain.currentDomain;
	l.load(new URLRequest('http://domain.com/extFile.swf'), context);
}else{
	l.load(new URLRequest('extFile.swf'));
}





Добавлено через 37 минут


Последний раз редактировалось flashfoxter; 07.07.2011 в 02:25.
Старый 07.07.2011, 04:21
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
все же не понятно , где разговор про кроссдомаин хмл ? Его видимо нету вот и ошибка. Надо его вставить и затем...
Код AS3:
Security.loadPolicyFile('cross.xml')
__________________
Марк Tween

Старый 07.07.2011, 04:29
flashfoxter вне форума Посмотреть профиль Отправить личное сообщение для flashfoxter Найти все сообщения от flashfoxter
  № 3  
Ответить с цитированием
flashfoxter

Регистрация: Jun 2011
Сообщений: 91
Таки он есть И я перепробовал все и вся Тот вариант кода что приведен, как я уже говорил для простоты решения по шагам.
И crossdomain я грузил... Хотя в документации сказано, что если он есть он его итак подхватит...

Я и не обещал разговоров про crossdomain.xml, я предлагал решить вопрос с кроссдоменными запросами, что бы он уже не возникал(потому, что таких тем или подобных на этом форуме очень много)


Ну в общем-то вызывает нарушение песочницы только при запуске с сервера, при запуске локально просто не забирает классы из swf. Пробовал так:
var bTestClass:Class = ApplicationDomain.currentDomain.getDefinition("BaloonSmall") as Class;
var b:MovieClip = new bTestClass();
addChild(b);


Последний раз редактировалось flashfoxter; 07.07.2011 в 05:01.
Старый 07.07.2011, 07:37
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 4  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Кроссдоменника либо нет либо он лежит не в корне. Если он лежит не в корне то нужно воспользоваться кодом из сообщения in4core.
Также надо понимать, что www.domain и domain - разные домены и их надо правильно прописать в кроссдоменнике

АПД: понятно, что вы каких-то самых базовых основ не понимаете, а потому поясню - кроссдоменник нужен на сервере ОТКУДА скачивается контент.
т.е.
Цитата:
есть swf1 который загружен на сервер и swf2 который находится на другом сервере
кроссдоменник надо положить на сервер, где лежит swf2


Последний раз редактировалось kackbip; 07.07.2011 в 07:40.
Создать новую тему Ответ Часовой пояс GMT +4, время: 00:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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