Надеюсь, это поможет кому-то избежать 6 часов, которые я потратил на решение этой проблемы. Adobe закрыла вопрос как неразрешимый, так что это было мое последнее средство.

я есть скрипт загрузки файлов Flex, который использует URLRequest для загрузки файлов на сервер. Я хочу добавить поддержку http-аутентификации (защищенные паролем каталоги на сервере), но я не знаю, как это реализовать - я предполагаю, что мне нужно как-то расширить класс, но о том, как я немного растерялся.

Я попытался изменить следующее (заменив HTTPService на URLRequest), но это не сработало.

private function authAndSend(service:HTTPService):void{        
   var encoder:Base64Encoder = new Base64Encoder();        
   encoder.encode("someusername:somepassword");        
   service.headers = {Authorization:"Basic " + encoder.toString()};
   service.send();
}

Я должен отметить, что я не разбираюсь в ActionScript / Flex, хотя мне удалось несколько изменить сценарий загрузки.

[Редактировать] - вот обновление моего прогресса, основанное на ответе ниже, хотя я все еще не могу заставить это работать:

Спасибо за помощь. Я пытался реализовать ваш код, но мне не повезло.

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

Я считаю, что причина того, что IE7 в порядке, заключается в том, что информация о сеансе / аутентификации передается браузеру и компоненту Flash - однако в Firefox это не так, и я испытываю описанное выше поведение.

Вот моя обновленная функция загрузки, включающая ваши изменения:

private function pergress():void 
{
if (fileCollection.length == 0) 
  {
  var urlString:String = "upload_process.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&filetotal="+fileTotal;
  if (ExternalInterface.available) 
    {
    ExternalInterface.call("uploadComplete", urlString);
    }
  }
if (fileCollection.length > 0) 
  {
  fileTotal++;
  var urlRequest:URLRequest = new URLRequest("upload_file.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&obfuscate="+obfuscateHash+"&sessidpass="+sessionPass);
  urlRequest.method = URLRequestMethod.POST;
  urlRequest.data = new URLVariables("name=Bryn+Jones");
  var encoder:Base64Encoder = new Base64Encoder();
  encoder.encode("testuser:testpass");
  var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString());
  urlRequest.requestHeaders.push(credsHeader);

  file = FileReference(fileCollection.getItemAt(0));
  file.addEventListener(Event.COMPLETE, completeHandler);
  file.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
  file.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
  file.upload(urlRequest);
  }
}

Как указано выше, я, кажется, испытываю те же результаты с поправками к моей функции или без нее.

Могу ли я спросить также, где должен находиться файл crossdomain.xml - поскольку у меня его нет, и я не уверен, где его разместить.

Ответы на вопрос(9)

Ваш ответ на вопрос