Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблемы доступа к swf загруженому с сервера (http://www.flasher.ru/forum/showthread.php?t=137576)

Nedash 17.03.2010 03:29

Проблемы доступа к swf загруженому с сервера
 
Загружаю с сервера swf файл.

loaderSource.load(new URLRequest("http://.../xxx.swf"))

loaderDest.loadBytes(loaderSource.contentLoaderInfo.bytes);
container.addChild(loaderDest);

И вот тут у меня начинают валится в лог ошибки:

http://localhost:8080/
*** Нарушение безопасности изолированной среды ***
SecurityDomain "http://localhost:8080/crossdomain.xml" пытался получить доступ к несовместимому контексту "file:///D|/client/client.swf"

Если просто добавляю на сцену container.addChild(loaderSource), то все проходит нормально. Но этот вариант меня не устраивает, так как контент из этого файла, будет добавлен на сцену много раз, поэтому и возникает необходимость его клонировать...

Как быть?

Dan Mor 19.04.2010 20:03

Меня тоже этот вопрос интересует.
Как вообще можно загружать с сервера обьект и рисовать его экземпляры в разных местах на сцене?
Кто нибудь может помочь? :)

Alex Lexcuk 19.04.2010 23:44

Устанавливаете прогу апаче и гразите флешку с вирт сервера
Код:

http://loaclhost/my.swf
она потянет в себя файл client.swf который тоже будет на вирт сервере по адресу
Код:

http://loaclhost/client.swf
И таким образом все будет работать вариант б (для ленивых) запускаете флешку
my.swf выбираете в плеере файл - создать проектор и опа, полученный my.exe грузит любые другие swf с компа и не показывает никакую безопастность.

dimarik 20.04.2010 01:28

Цитата:

Сообщение от Nedash (Сообщение 893598)
Загружаю с сервера swf файл.

loaderSource.load(new URLRequest("http://.../xxx.swf"))

loaderDest.loadBytes(loaderSource.contentLoaderInfo.bytes);
container.addChild(loaderDest);

И вот тут у меня начинают валится в лог ошибки:

http://localhost:8080/
*** Нарушение безопасности изолированной среды ***
SecurityDomain "http://localhost:8080/crossdomain.xml" пытался получить доступ к несовместимому контексту "file:///D|/client/client.swf"

Если просто добавляю на сцену container.addChild(loaderSource), то все проходит нормально. Но этот вариант меня не устраивает, так как контент из этого файла, будет добавлен на сцену много раз, поэтому и возникает необходимость его клонировать...

Как быть?

Разместить разрешение распространителя (по Муку). Т.е. справный crossdomain.xml.
Второй вариант - использовать импортирующую загрузку. Поиск по форуму.

Nedash 21.04.2010 02:04

Цитата:

Сообщение от dimarik (Сообщение 901861)
Разместить разрешение распространителя (по Муку). Т.е. справный crossdomain.xml.
Второй вариант - использовать импортирующую загрузку. Поиск по форуму.

Пробовал оба варианта, и через crossdomain.xml, и через импортирующую загрузку.
Вот содержимое crossdomain.xml:

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


Правда, ероры генерятся только при работе из под IDE, это неприятно тем, что чуток засорется лог, хочется избавиться от них.

При использовании импортирующей загрузки, возникает другая ошибка:

SecurityError: Error #2142: Нарушение изолированной среды: локальные SWF-файлы не могут использовать свойство LoaderContext.securityDomain. file:///D|/f1/client/client.swf пытался загрузить http://localhost:8080/GW/ships/ship.swf., и соот. вобще ничего не работает.

Хотелось обойтись без импортирующей загрузки и только убрать вывод в лог ероров.

dimarik 22.04.2010 00:58

По первоначальной ошибке понятно, что политикой безопасности FP запрещен доступ к содержимому как данным. BitmapData#draw(loader.content) не будет работать, но картинка может быть показана на экране, если сделать addChild(loader).

Импортирующая загрузка не работает для локально работающей флешки (Security.sandboxType != Security.REMOTE). Т.е. для нее нельзя указывать SecurityDomain, и я здесь становлюсь КО.

Проверьте, что у вашей загружающей флешки стоит "беспредел" -
Код AS3:

trace(Security.sandboxType == Security.LOCAL_TRUSTED)

.

С нею, когда Вы загружаете внешнюю swf посредством локальной swf разрешение распространителя не имеет значения (crossdomain.xml игнорируется). Также игнорируется и разрешение разработчика (Security.allowDomain в loadee флешке).

Nedash 22.04.2010 02:31

Цитата:

Сообщение от dimarik (Сообщение 902330)
По первоначальной ошибке понятно, что политикой безопасности FP запрещен доступ к содержимому как данным. BitmapData#draw(loader.content) не будет работать, но картинка может быть показана на экране, если сделать addChild(loader).

Просто у меня один объект показывается на сцене несколько раз, а добавить один и тот же инстанс на сцену можно только один раз, отсюда же и пришлось заняться клонированием контента.

Цитата:

Сообщение от dimarik (Сообщение 902330)
Проверьте, что у вашей загружающей флешки стоит "беспредел".

Да, у флешки стоит "беспредел" :)

dimarik 22.04.2010 02:45

Цитата:

Сообщение от Nedash (Сообщение 902344)
Да, у флешки стоит "беспредел" :)

Тогда ей разрешено "обращение к содержимому в виде данных". И Вы можете бреспрепятственно обращаться к средствам клонирования объекта.

Тип безопасности песочницы - "локальный с установленным доверием". Операция: обращение к содержимому в виде данных из ресурса в удаленной области действия - "Допускается". Колин Мук, Actionscript 3.0 для Flash. ПОдробное руководство. - СПб.: Питер, 2009, с. 478, т. 19.6.

Nedash 25.04.2010 23:47

Цитата:

Сообщение от dimarik (Сообщение 902350)
Тогда ей разрешено "обращение к содержимому в виде данных". И Вы можете бреспрепятственно обращаться к средствам клонирования объекта.

Тип безопасности песочницы - "локальный с установленным доверием". Операция: обращение к содержимому в виде данных из ресурса в удаленной области действия - "Допускается". Колин Мук, Actionscript 3.0 для Flash. ПОдробное руководство. - СПб.: Питер, 2009, с. 478, т. 19.6.

Ясно. Хоть есть нюансы, но будем считать что работает :) Спасибо!


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

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