リバースプロキシーやロードバランサーの環境で、Flashビューワにレポートが表示されない

文書番号 : 39193     文書種別 : 不具合     登録日 : 2015/11/27     最終更新日 : 2018/09/26
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
発生環境
リバースプロキシーやロードバランサーでURLを書き換えている環境で発生します。
状況
回避方法あり
詳細
リバースプロキシーやロードバランサーを使用してURL書き換えを行う環境において、クライアントから帳票Webアプリケーションにアクセスした場合、Webビューワ(Flashビューワ)にレポートが表示されない(※)場合があります。
※Flashビューワ本体は表示されているが、中身のレポートが表示されない状態

過去の事例として、以下の原因が考えられます。なお、各問題の対応方法については、「回避方法」を参照ください。

  1. URL変換が正しく行われていない
    通常、リバースプロキシーではWAN→LANへの通信の際にURL変換を行います。また、ロードバランサーにおいても、リクエストの振り分けルールによってはURL変換が発生する場合があります。
    URL変換がうまくいかない場合、ActiveReportsのWebサービスにアクセスできず、本事象が発生します。

    Flashビューワのレポート表示に関する情報は、以下のように「param」タグに定義されており、value属性内には、サーバーのキャッシュからレポートデータを取得するWebサービス「ActiveReports.ReportService.asmx」のパス情報が含まれています(赤字の部分)。
    -----------------
    <param name="FlashVars" value="Token=8153e1a4-5bc8-45c7-b493-b855d306f641&ToolBar=(省略)&exposeApi=true&resourceModuleURLs=Grapecity.ActiveReports.Flash.v9.Resources.swf&localeChain=ja_JP,en_US&doctype=1&WebServiceAppPath=/activereports/ar9web/&WebServiceAccessPoint=/activereports/ar9web/ActiveReports.ReportService.asmx" />
    -----------------

  2. URL変換の前後でドメインが異なる
    ActiveRepostsのFlashビューワを使用した場合、リバースプロキシーやロードバランサーのドメイン(ドメインA)と、内部に配置されたWebサーバー(Flashビューワを含むWebアプリケーションを配置したもの)のドメイン(ドメインB)が異なる場合には、Flashビューワの内部でクロスドメイン通信が発生します。これは、以下のナレッジ文書の「4.Webガーデン構成やロードバランサーの構成にしている」の図にありますように、ActiveReportsのFlashビューワに表示するデータを、図中(3)のWSDLに記載されたURL(Flashビューワを含むWebアプリケーションを配置したWebサーバーのURL、ドメインB)から直接取得しようとするためです。
    WebViewerコントロール使用時にレポートが表示されない

    また、Flash Playerの仕様として、Flash Playerをクロスドメイン環境で使用する場合は、ポリシーファイル(crossdomain.xml)でクロスドメイン通信を許可する必要があります。

    このため、ポリシーファイルの設定が行われていない場合、Flashビューワでクロスドメインの通信が許可されず、本事象が発生します。
回避方法
以下の方法が考えられます。
  1. リバースプロキシーのURL変換ロジックを変更し、「param」タグの該当部分(前述の「詳細」の赤字の部分)を正しく変換する
    ※URL変換の設定方法の詳細については、各機器およびソフトウェアの提供元にお問い合わせください

    例:緑字の部分を追加
    ●変換前
    WebServiceAppPath=/activereports/ar9web/&WebServiceAccessPoint=/activereports/ar9web/ActiveReports.ReportService.asmx

    ●変換後
    WebServiceAppPath=/aaa/bbb/activereports/ar9web/&WebServiceAccessPoint=/aaa/bbb/activereports/ar9web/ActiveReports.ReportService.asmx

  2. ポリシーファイル(crossdomain.xml)を配置する
    ActiveRepostsのFlashビューワをクロスドメイン環境で使用する場合には、Flashビューワを含むWebアプリケーションを配置したWebサーバーに、ポリシーファイルを配置する必要があります。
    なお、ポリシーファイルは、Webサーバーのルートに配置します。
    (例:http://www.arflashviewer.com/crossdomain.xml)

    ◆ポリシーファイル(crossdomain.xml)の例
    <?xml version="1.0"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
    <site-control permitted-cross-domain-policies="all"/>
    <allow-access-from domain="*" secure="false"/>
    <allow-http-request-headers-from domain="*" headers="*" secure="false"/>
    </cross-domain-policy>

    各オプションの設定内容については、Adobe社から公開されている情報を確認ください。

    [Setting crossdomain.xml file for HTTP streaming | Adobe Developer Connection]
    https://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html