- 締切済み
flashから別サーバーにあるCGIを起動
別サーバにあるCGIを起動する方法で行き詰っております。 どなたかアドバイスをお願いいたします。 ■現状 A社のサーバーにHTML(SWFも含む)を入れて、B社のサーバー(UNIX,Perlバージョンは最新)にあるCGIを起動させたいと考えています。(B社の中で同サーバーにHTMLとCGIを入れてテストした場合は問題なく動いています。) しかし、A社のサーバーにHTMLをアップしてもらうと、HTMLやSWFは問題なく閲覧できるのですが、B社のCGIが起動しません。これを解決したいのですが、なんとかいい方法はないでしょうか。 A社のアドレスはhttp://www.xxx.com/とします。 B社のCGIが入っているアドレスはhttp://www.zzz.com/cgi-bin/とします。 以下を試していますが、A社のサーバーでは動きませんでした。 B社サーバー内にc_01.swfというのを作り(http://www.zzz.com/c_01.swf)、1フレーム目にCGIを起動するコードを書きました。(以下) this.createEmptyMovieClip("page_mc1", 1); loadVariables("http://www.zzz.com/cgi-bin/c_01.cgi", page_mc1, "GET"); c_01.swfをA社のHTMLにあるSWFから _root.miniswf.loadMovie("http://www.zzz.com/c_01.swf"); というように読み込んでみましたが動きません。また、これは適当にやっているので見当違いかもしれませんが、A社のindex.htmlに <!--ムービーで使用されている URL--> <a href="http://www.zzz.com/"></a> <a href="http://www.zzz.com/cgi-bin/"></a> というタグを入れてみましたが動きませんでした。 B社で借りているレンタルサーバー(http://www.eee.com)にHTMLを入れてみると、http://www.zzz.com/cgi-bin/c_01.cgiは動くので不思議です。どなたか助けて下さい。 ※制作しているflashのバージョンはversion=8,0,0,0です。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
おそらくクロスドメインの問題だと思います。 簡単に言うと, 自分が管理していないドメインのデータを, そのドメイン下 以外の Flash からは無許可でロードできないということです↓。 Macromedia - デベロッパーセンター Macromedia Flash Player 7 におけるセキュリティの変更について http://www.adobe.com/jp/devnet/flash/articles/fplayer_security.html ~引用~ > 外部データを提供するサーバーには、 > ドメイン間を越えたローディングを許可するための > XML ファイル「ポリシーファイル」を設置する必要があります。 上記, XML ファイル「ポリシーファイル」を設置に関しましては, http://www.adobe.com/jp/devnet/flash/articles/fplayer_security_03.html このページの中ほどから始まる 「新しいセキュリティ制約に関する既存ムービーの修正方法」 辺りから詳しく書かれています。
- kancil
- ベストアンサー率27% (26/95)
ひょっとしたらFLASHは関係ないかもしれないですよ。 経験上、似たような現象にあったことがありましたが、そのときの原因は、B社のサーバーの設定で、外部のサーバーからのCGIの呼び出しは無効にするような設定がされている、というものでした。 B社のサーバー設定の仕様をよく調べてみたらよいかもしれません。
お礼
早速の回答ありがとうございます。助かります。 そうだと思ったのですが、 B社で別の会社のレンタルサーバーを借りてバーチャルドメインを振り分けてもらって(http://www.eee.com)HTMLを入れるとhttp://www.zzz.com/cgi-bin/c_01.cgiは動くのと、ちょっと不細工ですが、http://www.xxx.com/index.htmlのテキストの下に以下のタグを貼り付けてもhttp://www.zzz.com/cgi-bin/c_01.cgiは動くのです。HTMLにわけてタグとして以下のように入れると問題なく動くのですが、どうしても同じHTML内にあるFlashの命令でCGIを起動する必要があるのです(涙) <script language="JavaScript" type="text/JavaScript"> <!-- document.write("<img src=http://www.zzz.com/cgi-bin/c_01.cgi&?"); document.write("referrer="+document.referrer+"&"); document.write("width="+screen.width+"&"); document.write("height="+screen.height+"&"); document.write("color="+screen.colorDepth+"'>"); // --> </script> 関係ないかもしれませんが、http://www.xxx.com/index.htmlのフラッシュタグの入れ方も載せておきます。(一部略) <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553------(略)---" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" id="○○○" align="middle"> <param name="allowScriptAccess" value="sameDomain" />
お礼
回答ありがとうございます。 http://www.zzz.com/cgi-bin/crossdomain.xml を作成し、http://www.zzz.com/c_01.swfの一フレーム目に System.security.allowDomain( "http://www.xxx.com/" ); や System.security.allowInsecureDomain( "http://www.xxx.com/" ); など入れて試行錯誤してみましたが、やはり動いてくれません。。 入れ方などが違っているのでしょうか。