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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.04.2017, 21:35
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 175
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Не получается победить securityError

Всем привет.
Уже второй день бьюсь, перечитал что только можно - не получается победить проблему...

Есть локальная флэшка main.swf, которая обращается к Instagram - все отлично работает. Проверяю тип безопасности песочницы, которую устанавливает Flash Player
Код AS3:
trace(Security.sandboxType); // localTrusted
Тип безопасности - локальный с установленным доверием. Тут все понятно.

Но мне нужно, чтобы эта флэшка лежала на моем сайте - например, https://blablabla.com, и другая флэшка loader.swf, которая теперь лежит локально на компе, ее загружала в себя. (В loader.swf так же прописал Security.allowDomain, так как без этого main.swf загружаться не будет)

loader.swf:
Код AS3:
public class MainLoader extends Sprite
	{
		private var loader:Loader;
 
		public function MainLoader()
		{
			trace(Security.sandboxType);
 
			Security.allowDomain("https://blablalba.com");
 
			loader = new Loader();
			loader.load(new URLRequest("https://blablabla.com/main.swf")); 
			addChild(loader);
		}
	}
Работает - loader.swf загружает в себя main.swf
У loader.swf теперь тип безопасности - localTrusted, а у main.swf - remote.
Но вот обращение к Instagram не работает (Console):

Цитата:
Предупреждение: Не удалось загрузить файл политики из https://www.instagram.com/crossdomain.xml

*** Нарушение безопасности изолированной среды ***
Подключение к https://www.instagram.com/... прервано – нет разрешения от https://blablabla.com/main.swf
Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation: https://blablabla.com/main.swf cannot load data from https://www.instagram.com/...
...
...
...
Ошибка: Запрос ресурса на https://www.instagram.com/... источника запроса из https://blablabla.com/main.swf отклонен из-за отсутствия разрешений в файле политики.
__________________
кто не отвечает, того garbage collector забирает

Старый 17.04.2017, 23:33
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 2  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Попробуй так
Код AS3:
			var loader1:URLLoader = new URLLoader();
			loader1.addEventListener(Event.COMPLETE, function(event:Event):void{
				var loader2:Loader = new Loader();
				loader2.loadBytes(loader1.data);
			});
			loader1.dataFormat = URLLoaderDataFormat.BINARY;
			loader1.load(new URLRequest("https://blablabla.com/main.swf"));
Идея в том чтоб загрузить байты, затем загрузить эти байты через loadBytes.

Манипуляции с SecurityDomain в sandbox не к чему не приведут, раньше можно было через глобал настройки указать доверенную папку и назначать SecurityDomain.currentDomain.
Если ты делаешь AIR/Mobile app то хорошей практикой сначала загрузить все дополнительные модули извне байтами во временную директорию и использовать их уже оттуда
__________________
RocketJump

Старый 18.04.2017, 04:39
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 3  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 175
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Nooob, спасибо! Помогло )
__________________
кто не отвечает, того garbage collector забирает

Старый 18.04.2017, 06:20
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,642
Записей в блоге: 4
Цитата:
Сообщение от djken Посмотреть сообщение
Nooob, спасибо! Помогло )
Если переведешь приложение на AIR, никаких секьюрити ошибок не будет. Эйр кроссдоменные политики не учитывает
__________________
Ко мне можно и нужно обращаться на ты)

Старый 18.04.2017, 13:14
FlashRus вне форума Посмотреть профиль Отправить личное сообщение для FlashRus Найти все сообщения от FlashRus
  № 5  
Ответить с цитированием
FlashRus
 
Аватар для FlashRus

Регистрация: Nov 2006
Адрес: СПб
Сообщений: 918
Отправить сообщение для FlashRus с помощью ICQ Отправить сообщение для FlashRus с помощью Skype™
Куда ни зайдёшь - везде caseyryan пытается убедить djken перелезть на AIR)
__________________
ЛОДКИ

Старый 18.04.2017, 15:27
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 6  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 175
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
caseyryan, не раз посещала мысль попробовать это сделать, но боюсь, что может время отнять - наверняка при переводе на AIR прийдется что-то переделывать...

Перевел, все получилось
__________________
кто не отвечает, того garbage collector забирает


Последний раз редактировалось djken; 18.04.2017 в 15:48.
Старый 18.04.2017, 19:54
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,642
Записей в блоге: 4
Цитата:
Сообщение от FlashRus Посмотреть сообщение
Куда ни зайдёшь - везде caseyryan пытается убедить djken перелезть на AIR)
Потому что это самый разумный вариант в данной ситуации
__________________
Ко мне можно и нужно обращаться на ты)

Старый 19.04.2017, 03:12
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 8  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 175
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Цитата:
Если переведешь приложение на AIR, никаких секьюрити ошибок не будет. Эйр кроссдоменные политики не учитывает
caseyryan, под AIR тоже выдает ) main.swf так же лежит удаленно. Loader теперь под AIR.

Код AS3:
package
{
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
 
	[SWF(width="800", height="500", frameRate="30")]
 
	public class LoaderAir extends Sprite
	{
		private var loader:Loader;
 
		public function LoaderAir()
		{
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
			loader.load(new URLRequest("https://blablabla.com/main.swf"));
		}
 
		private function loadCompleteHandler(e:Event):void
		{
			addChild(loader)
		}
	}
}
Ошибка:

Цитата:
*** Нарушение безопасности изолированной среды ***
SecurityDomain \"https://blablabla.com/main.swf\" пытался получить доступ к несовместимому контексту \"app:/loader.swf\"
SecurityError: Error #2070: Security sandbox violation: caller https://blablabla.com/main.swf cannot access Stage owned by app:/LoaderAir.swf.
__________________
кто не отвечает, того garbage collector забирает

Старый 19.04.2017, 06:49
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,642
Записей в блоге: 4
Создай один контекст для них, и укажи его при загрузке. Тут дело не в кросдоменных политиках уже, а в том, что у main.swf свои ресурсы и своя сцена, а надо, чтобы она была единой
Код AS3:
var loader:Loader				= new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderCompele);
if (Security.sandboxType == Security.REMOTE) {
	var context:LoaderContext	= new LoaderContext();
	context.applicationDomain	= new ApplicationDomain(ApplicationDomain.currentDomain);
	context.securityDomain		= new SecurityDomain(SecurityDomain.currentDomain);
	loader.load(new URLRequest("https://blablabla.com/main.swf"), context);
} else {
	loader.load(new URLRequest("https://blablabla.com/main.swf"));
}
__________________
Ко мне можно и нужно обращаться на ты)

Старый 19.04.2017, 10:07
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 10  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Создай один контекст для них, и укажи его при загрузке.
Для AIR будет Security.sandboxType == Security.APPLICATION и твой код не выполнится.
Но даже если выполнился бы, то:
Цитата:
SecurityError: Error #2142: Security sandbox violation: local SWF files cannot use the LoaderContext.securityDomain property
Вне зависимости от того как оно запускается, в отладчике ли, собирается и запускается, securityDomain нужен только для разгуливания Remote зависимостей

и у SecurityDomain нету такого конструктора
Код AS3:
new SecurityDomain(SecurityDomain.currentDomain)
__________________
RocketJump

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

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

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


 


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


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