0

最初に、私は最初にビルドしなかったものを修正しようとしています。そのプロジェクトの担当者は、彼が去ったときにそれが正常に機能していたことを保証しますが、彼が去ってから私が触れていないバージョンには同じ問題。また、私は一般的にプログラミングに少し慣れていないので、最初の投稿で重要な情報を省略した場合はお知らせください。さらに情報を追加しようとします.

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;
}

誰かが少しでも洞察を持っていれば、私はここで完全にアイデアを失っているので感謝しています.

4

1 に答える 1

0

これは、Flash Player のセキュリティ モデルの制限です。この問題を回避するには、フラッシュを AIR アプリケーションとしてパッケージ化し、これらのセキュリティ制限の多くを解除します。

また、ローカルで .swf にアクセスする代わりに、Web サーバーで Flash ファイルをホストした方が成功する可能性があります。

できないもう 1 つのことは、Flash Player からローカル ファイルにアクセスすることです。これは、Flash Player ではできないことを AIR ランタイムで実行できる別の例です。

于 2010-06-11T22:03:50.377 に答える