PDA

Просмотр полной версии : Вызов скрипта из флешки, загруженной в другую флешку (Error #2032)


elmortem
07.10.2011, 16:29
Такая ситуация.
Есть флешка http://mysite/dir1/app1.swf, которая грузит флешку http://mysite/dir2/app2.swf, которая пытается отправлять и получать данные из скрипта http://mysite/dir3/index.php

Когда запускаем app1.swf локально, то всё работает нормально, но если запускать с сервера, то получаю ошибку #2032. Как понял в моём случае что-то с политиками безопасности.

Перепробовал уже наверное все комбинации разрешения доступа. Не работает. Не понимаю.
Кто сталкивался с подобными проблемами? Подскажите пожалуйста.

Inet_PC
07.10.2011, 16:39
Security.allowDomain('*');
и в той и в той флешке, не?

GBee
07.10.2011, 17:01
Это кажись IOErrorEvent

elmortem
07.10.2011, 17:08
и в той и в той флешке, не?
Не заработало. ):

Inet_PC
07.10.2011, 17:11
Как советует GBee это походу IOErrorEvent:
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
private function onError(e: ErrorEvent):void
{
trace('Error');
}

elmortem
07.10.2011, 17:28
Это кажись IOErrorEvent

Да, и?

Добавлено через 5 минут
Как советует GBee это походу IOErrorEvent:

Именно так я и ловлю ошибку. Побороть-то как? Локально всё работает, в инете - нет.

Добавлено через 13 минут
Возможно я не совсем правильно написал. app2 грузится в app1 нормально, ошибок нету. Ошибки начинаются при попытке вызвать скрипт из app2. Если я гружу удалённый app2 в локальный app1, то удалённый скрипт отлично отрабатывает. А если всё на сервере, то при обращении к скрипту - #2032.

Inet_PC
07.10.2011, 17:47
Адрес передаете правильный? Он просто в браузере дает загрузить флешку по этому адресу? Может нет прав на чтение, хз.

GBee
07.10.2011, 17:50
По абсолютному пути все грузите?

elmortem
07.10.2011, 17:50
Адрес передаете правильный? Он просто в браузере дает загрузить флешку по этому адресу? Может нет прав на чтение, хз.

Если первую флешку запускать локально, то всё работает (скрипт и вторая флешка на сервере). Так что адреса все точно верные. Скрипт сам по себе в браузере тоже работает.

Добавлено через 51 минуту
По абсолютному пути все грузите?

Да. (5 символов)

GBee
07.10.2011, 19:37
про 5 символов не понял. Полный трейс ошибки то есть? Выложите куда-нить?

nOobCrafter
07.10.2011, 22:14
грузите в текущий апп домен и секурити домен и будет вам щасте. Ну и учитываейте что http://www.ya.ru и http://ya.ru для флеша два разных сайта.

trng
07.10.2011, 22:42
Настройку компилятора network access / local access меняете?

elmortem
08.10.2011, 11:08
про 5 символов не понял. Полный трейс ошибки то есть? Выложите куда-нить?

Вот то, что отдаёт IOErrorEvent.toString()

[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"]


P.S. Про 5 символов, это чтобы сообщение можно было отправить, форум не позволяет отправлять мессаги меньше 5 символов.

Добавлено через 2 минуты
грузите в текущий апп домен и секурити домен и будет вам щасте. Ну и учитываейте что http://www.ya.ru и http://ya.ru для флеша два разных сайта.

Делаю вот так сейчас:

var context:LoaderContext = new LoaderContext();
if (Security.sandboxType != 'localTrusted') context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
context.checkPolicyFile = true;


Добавлено через 4 минуты
Настройку компилятора network access / local access меняете?

Нет, не меняю. Use Network Services = True

GBee
08.10.2011, 12:44
Вот то, что отдаёт IOErrorEvent.toString()
Код AS3:
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2032"]

В дебаге можете посмотреть подробнее, что событие содержит?

crazyone
09.10.2011, 03:04
#2032 - это Stream Error или проклятие адобовских нетворк сервайсов. Насколько я помню, к политике безопасности это иммет очень слабое отношение. Ибо на неправильную политику флеш плюется при помощи SecurityError-ов.

Флеш выдает 2032-ю ошибку всякий раз, когда ему не нравится ответ сервера. Типа если хттп-статус неправильный.
Добавьте слушателя на HttpStatusEvent.HTTP_STATUS + посмотрите в логи сервера - куда идет запрос и что сервер отвечает.

И да, послушайтесь GBee и поставьте дебаг плеер, чтобы получать не только номер ошибки, но и более-менее развернутое ее описание.

elmortem
11.10.2011, 20:00
Вы были правы, сервер плевался 500 ошибкой. Локально он не отрабатывал проблемный код, поэтому всё работало. HTTP STATUS - сила. (:
Всем спасибо.