класс загрузчика Flex не загружает изображение, защита от хотлинка - PullRequest
0 голосов
/ 31 октября 2011

Я создаю приложение Adobe Air, которое должно загружать внешние изображения с разных веб-серверов.У меня настроена основная функция загрузчика, но я столкнулся с одним сервером, который не позволял бы мне загружать его изображения.это дало мне следующую ошибку:

Error #2036: Load Never Completed. URL: http://www.url.com/folder/image.jpg

После этого я связался с менеджером сервера, и он сказал мне, что работал над защитой горячих ссылок для своих изображений.Он также сказал мне, что я могу подорвать это, указав 'http://www.url.com' в качестве реферера при построении заголовков запроса.

Прежде всего, я не нашел никаких следов защиты хотлинков с онлайн-тестами для защиты хотлинков.Во-вторых, я понятия не имею, как настроить то, что он сказал мне, с помощью простой функции класса Loader.

мой текущий код:

_loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadImages);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, imgLoadErrorHandler);

_loader.load(new URLRequest(encodeURI(pictureUrl)));

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

Вы не можете изменить заголовок реферера во Flex, даже используя технику Treur.В AIR есть один или два таких заголовка, которые защищены и всегда будут перезаписаны (cookie - один из них, если я не ошибаюсь).У меня была куча проблем с этим, как у вас, но с SWF-файлами.

Стандартный браузер отправит пустой реферер по умолчанию.Приложение AIR отправит себя в качестве средства визуализации по умолчанию (что-то вроде app: /Main.swf).Вы можете легко увидеть это, используя прокси-сервер для отладки, такой как Charles http://www.charlesproxy.com/. Это приводит к тому, что некоторые запросы автоматически отклоняются.

Вот тема на форуме Adobe: http://forums.adobe.com/message/3868365

Вот ошибка, которую я открыл в Adobe Bugbase.В настоящее время он открыт с приоритетом 3-High и был подтвержден Adobe.Я не знаю, будет ли это исправлено в конце концов.https://bugbase.adobe.com/index.cfm?event=bug&id=2945647

Вы также можете проголосовать за исправление в Adobe Labs Ideas: http://ideas.adobe.com/ct/ct_a_view_idea.bix?c=9D564F43-979A-4E35-AA21-85A61B6AB8DE&idea_id=CA6C107B-CE93-4DAF-82EA-503C4DB2B1F8

2 голосов
/ 31 октября 2011

Вы должны добавить HTTP-заголовок в свой URLRequest

var refererHeader:URLRequestHeader = new URLRequestHeader('Referer', 'http://www.url.com');
var request:URLRequest = new URLRequest(encodeURI(pictureUrl));
request.requestHeaders.push(refererHeader);
loader.load(request);

Обратитесь;) к http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequestHeader.html для получения дополнительной информации и примеров добавления заголовков HTTP в URLRequest и http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14 и http://en.wikipedia.org/wiki/HTTP_referrer для заголовка HTTP Refere

Обновление: К сожалению, это не работает для заголовка Referer в соответствии с Exort (и документацией Adobe после более детального изучения)

...