Прежде всего, я пытаюсь исправить то, что я не построил для начала, и тот парень, проект которого он уверяет, что он отлично работает, когда он ушел, хотя версия, которую я не коснулся с тех пор, как он ушел, по-видимому, имеет те же проблемы. Я также немного новичок в программировании в целом, поэтому дайте мне знать, если я оставил важную информацию в своем первом сообщении, и я попытаюсь добавить дополнительную информацию.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;
}
Если у кого есть какие-либо понять вообще, я был бы благодарен, потому что я полностью из идей здесь.
Фактически он размещен на веб-сервере в настоящий момент. Я надеялся, что это не так, поскольку сокет-связь работает нормально. Я предположил/надеялся, что вспышка не будет различать «http: // localhost: 2188/awdwaf» и «http://abcde.com/awdwaf» в отношении ограничений безопасности. Возможно, я столкнулся с подобными проблемами, если попытаюсь использовать соединения сокетов для получения файлов? Приложение AIR не реально выполнимо в этой ситуации, поэтому мне нужно найти другое решение. –
Да, я помню, имея дело с этим, по какой-то причине важно, чтобы Flash ограничивал доступ к локальному хосту. Я предполагаю, что если вы можете найти другую флеш-версию без ограничений безопасности, ваш .swf должен работать нормально. Я не уверен, существует ли он, кроме среды выполнения AIR. – Kekoa