2010-06-11 1 views
0

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

У меня есть флэш-приложение, размещенное в режиме онлайн, которое выступает в роли клиента для серверного приложения, написанного на Delphi. Большая часть сообщений выполняется с использованием сокетов, которые отлично работают. Загрузка файлов данных и загрузка файлов результатов выполняется с использованием HTTP-запросов, которые работают нормально, пока пользователь использует экземпляр сервера на другом компьютере. Однако, если у пользователя установлено серверное приложение на своем собственном компьютере и он пытается использовать его, указав localhost как url, связь сокета все еще работает, но HTTP-запросы этого не делают.

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

приложение флэша будет сидеть в ожидании локального неопределенно большой части времени, пока я не закрою сервер приложений, а затем дать сообщение об ошибке:

Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security sandbox violation: http://abcde.com/Testing.swf cannot load data from http://localhost:2188/guid=53D569A8-56EA-4AC2-BDA0-2F43525E1378. 

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

Кроме того, если я просто положил http://localhost:2188/guid=53D569A8-56EA-4AC2-BDA0-2F43525E1378 в веб-браузер, файл результатов, который я пытаюсь получить, всплывает просто отлично.

Вот кусок кода во флэш-приложение, которое пытается загрузить файл:

private function downloadFile():void 
{ 
    trace("downloadFile: " + this.guid + " from " + this.server.URL); 
    fileRef.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
    fileRef.addEventListener(ProgressEvent.PROGRESS, downloadProgressHandler); 
    var ur:URLRequest = new URLRequest("http://" + _server.URL + ":" + _server.port); 
    ur.url += "/guid=" + _guid; 
    ur.method = URLRequestMethod.GET; 
    fileRef.download(ur, _filename); 
    _downloadStart = true; 
} 

Если у кого есть какие-либо понять вообще, я был бы благодарен, потому что я полностью из идей здесь.

ответ

0

Это ограничение модели безопасности флеш-накопителя. Чтобы обойти эту проблему, вы можете упаковать свою флешку в качестве приложения AIR и устранить многие из этих ограничений безопасности.

Возможно, у вас также есть лучший успех, если вы размещаете свой флеш-файл на веб-сервере, а не на локальном .swf.

Другое, что вы не сможете сделать, это получить доступ к локальным файлам из флеш-плеера, это еще один пример того, что вы можете сделать со средой выполнения AIR, которую вы не можете сделать в проигрывателе Flash.

+0

Фактически он размещен на веб-сервере в настоящий момент. Я надеялся, что это не так, поскольку сокет-связь работает нормально. Я предположил/надеялся, что вспышка не будет различать «http: // localhost: 2188/awdwaf» и «http://abcde.com/awdwaf» в отношении ограничений безопасности. Возможно, я столкнулся с подобными проблемами, если попытаюсь использовать соединения сокетов для получения файлов? Приложение AIR не реально выполнимо в этой ситуации, поэтому мне нужно найти другое решение. –

+0

Да, я помню, имея дело с этим, по какой-то причине важно, чтобы Flash ограничивал доступ к локальному хосту. Я предполагаю, что если вы можете найти другую флеш-версию без ограничений безопасности, ваш .swf должен работать нормально. Я не уверен, существует ли он, кроме среды выполнения AIR. – Kekoa

Смежные вопросы