0

Web サーバーから Flex .swf ファイルをリモートでロードしたい AIR 1.5 アプリをコーディングしています。

Flex 3.2 SDK を使用しており、SWFLoader を介してサブアプリケーション機能を使用しようとしています。これを行う方法については、サブアプリケーションの開発と読み込みのドキュメントを参照してきました。

実際、Flex .swf ファイルをリモート Web サーバーから正常にロードでき、リモート サンドボックスにロードされます。この .swf ファイルの実行中のフォームは、AIR ネイティブ ウィンドウで設定した透明度の設定も尊重します。

ここにこすりがあります:

本番環境では、Web サーバーは Spring Security を使用して、ログイン Web ページへの不正アクセスを回避します (これは、通常の開発/QA ビルドのデプロイにも当てはまります)。ログインが成功すると、ログインの応答によって Cookie が設定されます。この Cookie ヘッダーは、サイトからコンテンツを取得しようとする後続のすべての HTTP インタラクションに存在する必要があります。

SWFLoader を使用して Flex の .swf ファイルを取得する際に Cookie ヘッダーを設定する方法がわかりません。

SWFLoader を使用して、Spring Security で保護されている Web サイトからファイルを取得するにはどうすればよいですか (これは、Java ベースの Web サイトへのアクセスを保護するために広く使用されている手段です。Spring Source と融合する前は、Acegi セキュリティと呼ばれていました)。

Flex ベースのコードをブラウザーの Flash Player サンドボックスで実行すると、簡単に実行できました。Spring Security の機能は、ブラウザーによって拡張されるだけでした。ただし、Flex ベースのアプリをリモート サンドボックスの安全な範囲内でサブアプリケーションとして AIR で実行しようとすると、地獄のような体験になることがわかっています。

AIR HTML コントロールは、Spring Security で十分に機能しますが、AIR ネイティブ ウィンドウで透明度が true に設定されている場合、ロードされた .swf または .pdf コンテンツが表示されないため、使用できません。私たちの特定の UI 設計では、ユーザーのデスクトップ上にフローティングする MDI 子ウィンドウを実行しているため、透過性を true に設定することが絶対に義務付けられています。

4

1 に答える 1

0

この問題は、AIR HTMLコントロールの使用とSwfLoaderの使用を連鎖させて、目的のリモート.swfファイルをロードすることで解決しました。

AIRアプリがHTMLインスタンスにロードするHTMLWebページにJavaScript関数を記述しました(ページ完了イベントが発生すると、AIR FlexコードからJavaScript関数を安全に呼び出すことができます-もちろん、Flexコードは処理できますHTML完了イベント)。

このJavaScript関数は、XmlHttpRequest()を使用して、承認にSpringSecurityを使用するWebサイトにログインします。Set-Cookieヘッダーは、ログインが成功すると処理されます。XmlHttpRequest()の応答が完了すると、Webページに配置されたダミーのDIVオブジェクトに合成クリックイベントがディスパッチされます。AIR Flexコードは、この合成クリックイベントに登録して処理することができます。

クリックイベントを処理すると、AIR Flexコードは、SwfLoaderインスタンスのインスタンス化に安全に進むことができることを認識します。SwfLoaderオブジェクトからの完全なイベントが発生すると、SwfLoaderのオブジェクト参照がAIRアプリの表示リストに配置されます。

次に、ユーザーは、リモートでロードされたswfファイルが実行を開始し、独自のUIを表示することを確認します。サブアプリケーションのリモートサンドボックスコンテキストで実行されています。サブアプリケーション機能は、SwfLoaderコントロールを介してFlexSDK3.2でサポートされています。

そのため、AIRアプリはHTMLコントロールによって確立されたCookieヘッダーを管理しています。そのCookieヘッダーは、リモートの.swfファイルをロードするために使用されるときにSwfLoaderコントロールのHTTPリクエストで発行されます。Spring Securityフィルターはこれを確認し、認証されたユーザーセッションからの要求を検出します。

于 2009-04-08T04:24:22.583 に答える