Преамбула:
При разработке десктопного приложения на AIR столкнулся с проблемой доступа к ресурсам защищеным Basic access authentication или по-простому базовой авторизацией. Причем ресурсы расположены на разных серверах, условно site1.ru и site2.ru.
Проблема:
Для базовой авторизации необходимо в HTTP-запросе передавать заголовок Authorization с данными по логину и паролю.
Добавить нужный заголовок в URLRequest не представляется возможным из-за ограничений URLRequestHeader.
Нельзя, а хочется, воспользоватся такими средствами как загрузчик LoaderMax.
Решение:
Способ №1
Есть отличная библиотека as3httpclient с реализацией на сокетах аналога URLLoader-а и URLRequest-а которые позволяют добавить необходимые заголовки в HTTP-запрос.
Этот способ хорош для выполнения запросов обращеных к серверу бизнес-логики приложения и не удобен для загрузки статических ресурсов (в частости изображений) которые придется грузить в бинарном виде, заталкивать их в экземпляр класса Loader или другой класс для использования загруженного ресурса.
Способ №2
Как оказалось все уже придумано самими адобами.
Надо по-внимательней смотреть в документацию!
Встречайте URLRequestDefaults.
Достаточно один раз указать данные для авторизации, скажем в конструкторе главного класса приложения:
При разработке десктопного приложения на AIR столкнулся с проблемой доступа к ресурсам защищеным Basic access authentication или по-простому базовой авторизацией. Причем ресурсы расположены на разных серверах, условно site1.ru и site2.ru.
- site1.ru – серверная часть приложения
- site2.ru – хранилище статических ресурсов (картинки, флешки и прочая мультимедия)
Проблема:
Для базовой авторизации необходимо в HTTP-запросе передавать заголовок Authorization с данными по логину и паролю.
Добавить нужный заголовок в URLRequest не представляется возможным из-за ограничений URLRequestHeader.
Нельзя, а хочется, воспользоватся такими средствами как загрузчик LoaderMax.
Решение:
Способ №1
Есть отличная библиотека as3httpclient с реализацией на сокетах аналога URLLoader-а и URLRequest-а которые позволяют добавить необходимые заголовки в HTTP-запрос.
var loader:SocketURLLoader = new SocketURLLoader(); loader.addEventListener(Event.COMPLETE, onComplete); var request:SocketHTTPRequest = new SocketHTTPRequest(); request.url = "http://site1.ru"; request.requestHeaders = [new URLRequestHeader("Authorization", "Basic dXNlcjpwYXNzd29yZA==")]; loader.load(request);
dXNlcjpwYXNzd29yZA==это сериализованная в base64 строка "user:password".
Этот способ хорош для выполнения запросов обращеных к серверу бизнес-логики приложения и не удобен для загрузки статических ресурсов (в частости изображений) которые придется грузить в бинарном виде, заталкивать их в экземпляр класса Loader или другой класс для использования загруженного ресурса.
Способ №2
Как оказалось все уже придумано самими адобами.
Надо по-внимательней смотреть в документацию!
Встречайте URLRequestDefaults.
Достаточно один раз указать данные для авторизации, скажем в конструкторе главного класса приложения:
URLRequestDefaults.setLoginCredentialsForHost("site1.ru", "user", "password"); URLRequestDefaults.setLoginCredentialsForHost("site2.ru", "user", "password"); URLRequestDefaults.authenticate = true;
Комментариев нет:
Отправить комментарий