最初に、私は最初にビルドしなかったものを修正しようとしています。そのプロジェクトの担当者は、彼が去ったときにそれが正常に機能していたことを保証しますが、彼が去ってから私が触れていないバージョンには同じ問題。また、私は一般的にプログラミングに少し慣れていないので、最初の投稿で重要な情報を省略した場合はお知らせください。さらに情報を追加しようとします.
Delphi で記述されたサーバー アプリケーションのクライアントとして機能する、オンラインでホストされているフラッシュ アプリケーションがあります。ほとんどの通信は、正常に機能するソケットを使用して行われます。データ ファイルのアップロードと結果ファイルのダウンロードは、HTTP 要求を使用して行われます。これは、ユーザーが別のコンピューターでサーバーのインスタンスを使用している限り、正常に機能します。ただし、ユーザーが自分のコンピューターにサーバー アプリケーションをインストールしていて、localhost を URL として指定して使用しようとすると、ソケット通信は機能しますが、HTTP 要求は機能しません。
すべてのソケットベースの通信は正常に機能し、ローカルホスト上にない場合はすべての HTTP リクエストも正常に機能します。これが私にとって非常に不可解な理由です。サーバーがディスパッチするフラッシュ クロスドメイン ポリシー ファイルを、完全に許可的、すべてのポート、すべてのドメイン、すべての http-request-headers に変更しようとしましたが、それでもうまくいきません。
Flash アプリは、ほとんどの場合、サーバー アプリケーションを閉じるまで無期限に localhost を待機し、次のエラー メッセージが表示されます。
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を Web ブラウザーに入力すると、取得しようとしている結果ファイルが正常に表示されます。
ファイルのダウンロードを試みる Flash アプリ内のコードのチャンクは次のとおりです。
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;
}
誰かが少しでも洞察を持っていれば、私はここで完全にアイデアを失っているので感謝しています.