AS3 Использование загрузчика для загрузки файла, защищенного htaccess - PullRequest
3 голосов
/ 06 июля 2011

Я пытаюсь загрузить внешний SWF, размещенный на сайте, в локальный файл SWF.Внешний SWF-файл находится в защищенном паролем каталоге с использованием htaccess.

Вот код, который я сейчас пытаюсь использовать:

var loaderUrlRequest:URLRequest = new URLRequest("http://www.my-website.com/externalFlashFile.swf");
loaderUrlRequest.requestHeaders.push(new URLRequestHeader("Authorization", "Basic " + $Base64.encode("username:password")));
loaderUrlRequest.method = URLRequestMethod.POST;
loaderUrlRequest.data = true;
var loader:Loader = new Loader();
addChildAt(loader, 0);
loader.load(loaderUrlRequest);

URL-адрес файла, имя пользователя, пароль и base64все кодировки проверены и правильны.

Однако я получаю следующие ошибки:

Error opening URL 'http://www.my-website.com/externalFlashFile.swf'
Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.

Любые идеи о том, что я могу делать неправильно, или если есть лучший способ сделать этоэто с точки зрения чистой вспышки?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Белый кит, Святой Грааль

В Adobe® AIR® содержимое в изолированной программной среде безопасности приложения (например, содержимое, установленное с приложением AIR) может использовать любые заголовки запросабез ошибок. Однако для содержимого, запущенного в Adobe AIR, находящегося в другой изолированной программной среде безопасности, или для содержимого, запущенного в Flash® Player , при использовании следующего запроса заголовки вызывают ошибку времени выполнения :

Accept-Charset, Accept-Encoding, Accept-Ranges, Age, Allow, Allowed, Авторизация , Charge-To, Connect, Connection, Content-Length, Content-Location,Диапазон содержимого, Cookie, Дата, Удалить, ETag, Ожидать, Получить, Руководитель, Хост, If-Modified-Since, Keep-Alive, Last-Modified, Местоположение, Макс. Переадресация, Опции, Источник, Post, Proxy-Authenticate,Proxy-Authorization, Proxy-Connection, Public, Put, Range, Referer, Range-Request, Retry-After, Server, TE, Trace, Trailer, Transfer-Encoding, Обновление, URI, User-Agent, Vary, Via, Warning,WWW-Authenticate, x-flash-version.

URLRequestDefaults.setLoginCredentialsForHost : устанавливает учетные данные пользователя и пароля по умолчанию для выбранного хоста.... Только содержимое Adobe® AIR® , работающее в изолированной программной среде безопасности приложения, может использовать класс URLRequestDefaults.

Таким образом, у вас есть только один вариант: загрузить SWF-файл из Интернета.страница того самого домена, который требует авторизации.Вы пройдете через этапы http-авторизации до загрузки swf, и браузер сохранит все остальное.

Фактически, когда вы пытаетесь получить доступ к чему-то, стоящему за авторизацией http, сервер выдает ответ http с кодом = 401 (еслиВы отправляете заголовок авторизации заранее).Flash Player ничего не может с этим поделать, и только среда выполнения AIR способна отправлять заголовок авторизации любым способом.

0 голосов
/ 06 июля 2011

Вам необходимо пройти проверку подлинности из приложения ActionScript, чего можно добиться с помощью некоторых статических переменных и методов класса URLRequestDefaults .

Все, что вам нужно сделать, это добавить эти две строки кода перед тем, как сделать вызов с помощью URLLoader:

URLRequestDefaults.setLoginCredentialsForHost(hostname, user, password);
URLRequestDefaults.authenticate = true;

Вы также можете удалить заголовки requestHeaders (если у них нет другой цели).

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