![]() |
Загрузка изображения (Loader) с другого хоста и crossdomain: не получается
Вопрос решен, сам дурак. Надо было по ссылке всего-лишь попробовать открыть Crossdomain, апач его не выдавал.
Помогите, пожалуйста. Как только в очередной раз сталкиваюсь с политикой безопасности - так и попадаю в тупик. В этот раз не могу обойти проблему с загрузкой аватара во флешку. Флешка грузится с домена А, аватар лежит на основном сервере (Б) в подкаталогах. Вот код: Код AS3:
Код:
<?xml version="1.0"?> SecurityError: Error #2122: Нарушение изолированной среды: BitmapData.draw: http://localhost/flash/flash.swf не может осуществить доступ к http://acc.ru/users/Avatar.jpg. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен. at flash.display::BitmapData/draw() at com.dVyper.utils::Alert/createBackground() at com.dVyper.utils::Alert/show() at classes.game::Blocks/loginOnClick() Кстати, сами аватары при этом загружаются, но на событие onClick по логину почему-то выкидывает эту ошибку. P.S.: Почему на этом форуме регулярно исчезает обработка тегов? Часто захожу в темы, где вместо нормального вида - сплошные BBCode. Жму "Предпросмотр сообщения" - первый раз нормально, второй раз исчезают кнопки "отправить" и в просмотре не обработаны теги. P.P.S.: Только что проверил - самое интересное, что ошибка появляется при нажатии не на картинку, а именно на сторонний TextField, при котором вызывается вывод всплывающего сообщения. Уму не растяжимо... |
Ошибка у вас возникает при попытке отрисовать это аватар в битмапу. Судя по всему в функции createBackground().
|
alatar, в классе Alert не используется аватар, в этом-то и вся загадка. Аватар вообще отдельно добавлен в примерно такую иерархию:
-stage --Sprite ---avatarImg:Sprite ----rect:Shape ----ldr:Loader по маске rect А класс Alert-ов вообще отдельно и никак с этим не связан. |
Alert создает "модальное" окно, соответственно для эффекта размытого фона содержимое display list, отрисовывается в битмапу, в том числе и ваш аватар.
|
Я методом тыка уже пришел к аналогичному выводу - чтобы сделать размытость, он затрагивает битмап, но вопрос в другом - почему он ругается на политику безопасности? Ведь на обоих сайтах указан crossdomain и в коде указано его использование!
|
а это зачем?
Цитата:
|
dimarik, я выше указал, что на обоих сайтах crossdomain.xml присутствует в корне и привел его содержимое.
1. А crossdomain.xml зависит каким-то образом от кодировки файла? 2. Я так понимаю, флеш забирает crossdomain.xml с удаленного сервера из корневой папки? Не может же он файл политик искать в папке с аватаром? 3. Во флешке используется сокет-соединение, где сервер А, на котором сама флешка и находится, тоже генерирует файл политик и отправляет его по сокету. Может ли это как-то влиять на то, что на сервере Б crossdomain.xml не воспринимается правильно? Бред, наверное, несу. |
Для песочницы типа REMOTE, коей является http://localhost - "Обращение к содержимому в виде данных для ресурсов удаленной области действия, находящихся за пределами региона происхождения [загружающей] SWF допускается только по разрешению распространителя (с)" Колин Мук.
Поясню: "разрешение распространителя" - это правильно составленный crossdomain.xml. UPD. Гм. Сложно сейчас сказать, является ли http://localhost REMOTE. |
Приветствую всех.
Проблема все ещё актуальна. Как загрузить картинку с другого домена, на котором создан crossdomain.xml, он доступен, содержит <allow-access-from domain="*" /> . Я думал, проблема в localhost. Но то же самое происходит и на сервере! Ошибка "Нарушение изолированной среды: BitmapData.draw:... не может осуществить доступ к... . Не предоставлен доступ к файлам политики." Или (иногда) "Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен.". Уже пытался сделать "Security.loadPolicyFile('http://домен/crossdomain.xml');" после загрузки изображения и перед ней. Никакого результата. Код AS3:
Накопал тут аналогичные ситуации. Только там не могли изменить размер swf, а в моем случае это картинки. И если в загружаемой флешке можно указать System.security.allowDomain(), то в картинке-то этого не пропишешь! Пробовал кодировать crossdomain.xml в UTF-8. Результат тот же. |
Воспользуйтесь консолью firebug, сниффером или подобным инструментом, чтобы убедиться, что сервер отдает файл политик.
Кодировка crossdomain.xml UTF-8 обязательна. Гляньте глазками что происходит. Для этого используйте дебаг-версию флешплеера. Настройте свой mm.cfg Лежит здесь (Windows Vista) C:\Users\{USERNAME}\mm.cfg Содержание примерно такое Код:
TraceOutputFileName=C:\Users\{USERNAME}\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txtC:\Users\{USERNAME}\AppData\Roaming\Macromedia\Flash Player\Logs\policyfiles.txt здесь детали. В личку скиньте ссылку на сайт, сам посмотрю. |
| Часовой пояс GMT +4, время: 11:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.