Flash AS3 - URLLoader не может загружать двоичные данные из другого домена - PullRequest
2 голосов
/ 05 марта 2012

Два важных момента.1 - SWF должен иметь возможность загружать двоичные данные из любого домена.2 - SWF не может загрузить XML-файл политики из URL, потому что форма загрузки позволяет мне загружать только SWF-файлы, поэтому я не могу включать любые другие данные.Я пробовал:

Security.allowDomain("*");

Но это работает только для SWF-файлов.Я пытался внедрить XML-файл политики:

var dataXML:XML = 
<?xml version="1.0"?> 
<!-- http://www.foo.com/crossdomain.xml --> 
<cross-domain-policy> 
    <allow-access-from domain="*" /> 
</cross-domain-policy>;

Но Security.loadPolicyFile (url: String) позволяет устанавливать только URL файла, а не данные.Итак, мой вопрос: как я могу разрешить SWF загружать двоичные файлы из разных доменов, не имея никаких дополнительных файлов?Код URLLoader:

var request:URLRequest = new URLRequest("http://differentdomain.com/binaryfile.dat");
var words:URLLoader = new URLLoader(); 
words.dataFormat = URLLoaderDataFormat.BINARY; 
words.addEventListener(Event.COMPLETE, prepareFile);
words.addEventListener(IOErrorEvent.IO_ERROR, loadError);
words.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secureError);
words.load(request);

Это сделает ошибку безопасности, если файл находится в другом домене, чем SWF-файл.Спасибо за любую помощь.

Возможность получить двоичные данные из JavaScript, используя ExternatInterface в коде AS3.Вот кросс-браузерная библиотека для чтения двоичных файлов: двоичная читалка и более поздняя версия jDataView Надеюсь, это кому-нибудь поможет.Спасибо Джонатану Хедборгу за идею.

Ответы [ 4 ]

2 голосов
/ 05 марта 2012

Вы должны прочитать это раньше: http://kb2.adobe.com/cps/142/tn_14213.html

И вы можете использовать прокси-скрипт, поиск в google / stackoverflow, вы найдете много ответов ...

1 голос
/ 08 марта 2012

Взгляните на это: http://wonderfl.net/c/gJXA

Какой-то трюк, который работает с любыми двоичными данными из любого домена, без необходимости использовать ajax или собственный прокси-скрипт (иногда у вас нет возможности загружать php-скрипты).

0 голосов
/ 07 марта 2012

Некоторое время назад мне пришлось решать аналогичную проблему, и мне удалось использовать UrlStream для загрузки целевых байтов SWF во время выполнения.

gist: https://gist.github.com/1988661

0 голосов
/ 06 марта 2012

Flash - это элемент управления, наиболее часто используемый HTML-страницами.Как результат, он должен соблюдать ограничения безопасности на других (то есть JavaScript) объектах на той же странице.Веб-страницы используют того же источника политика безопасности - объекты на странице не могут считывать данные из доменов, отличных от домена текущей страницы.

Бывают случаи, когда серверы для других доменов разрешают такой доступ.То есть в случае Flash это crossdomain.xml, аналогичный файл политики существует для Silverlight, есть несколько способов обработать его для JavaScript, включая JSONP .

Неправильное использование способов обхода политики одного источникаприводит к межсайтовому скриптингу проблем на вашем сайте / странице, которые управляют вашим контролем, что часто приводит к утечке личной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...