トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   サーバ関連【CGI・FCS・XMLSocket etc】
     CGIのネット上での動作について。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Aikawa
Åê¹ÆNo.15092
投稿日時: 2005-2-12 17:28
新米
居住地: 埼玉県__居心地と読んでいました...。
投稿: 19
使用環境:
WinXP,FLASH MX,FLASH MX 2004
CGIのネット上での動作について。
フラッシュ仕様で、自作CGIを利用しようと思っています。
デスクトップから、ネット経由で、CGIを呼び出したところ、CGIは正しく動作し、その結果がフラッシュファイル上に正しく表示されました。
同様のファイルをインターネット上にアップロードして再度、CGIを呼び出したところ今度は、フラッシュファイル上に正しく表示されません。
フラッシュファイル上に記述した、識別用スクリプトからは、受信できませんでした。」と表示されます。
おそらく、フラッシュファイルから「Send」したものをCGIファイルから「Load」できていないように思われます。

(使用しているフラッシュのバージョンは6で、一つ古い型です。)

自分では、どの部分に問題があるのか、判断しかねます。
なにか、できるアドバイスがあればお願いします。

空野大二郎
Åê¹ÆNo.15094
投稿日時: 2005-2-12 18:12
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: CGIのネット上での動作について。
 まいど。

 Aikawaさんご自身がまず、ご自分のおかれた現状を把握してください。
引用:
Aikawaさんは書きました:
自分では、どの部分に問題があるのか、判断しかねます。
なにか、できるアドバイスがあればお願いします。



 .cgiファイルと.swfファイルは同じドメイン上にアップロードされて
いるのでしょうか。それとも、異なるドメイン上なのでしょうか?

引用:
Aikawaさんは書きました:
デスクトップから、ネット経由で、CGIを呼び出したところ、CGIは正しく動作し、その結果がフラッシュファイル上に正しく表示されました。
同様のファイルをインターネット上にアップロードして再度、CGIを呼び出したところ今度は、フラッシュファイル上に正しく表示されません。



 憶測で考えるよりも、ご確認いただいた方が状況は改善しやすいです。
 .cgiファイルがFlashから受け取った情報を、htmlファイルとして
出力して、そちらの動作も正常に働いているのかご確認下さい。
引用:
Aikawaさんは書きました:
おそらく、フラッシュファイルから「Send」したものをCGIファイルから「Load」できていないように思われます。



 .cgiを呼び出すActionSciptの記述は、どのようになっているのでしょうか?

 Aikawaさんの状況がフォーラム参加者にも再現できるような情報を、
必要最低限テストできるように不要部分を削除して投稿してください。 


----------------
空野 大二郎 アニメーター作家
桜の道

Aikawa
Åê¹ÆNo.15096
投稿日時: 2005-2-12 19:31
新米
居住地: 埼玉県__居心地と読んでいました...。
投稿: 19
使用環境:
WinXP,FLASH MX,FLASH MX 2004
Re: CGIのネット上での動作について。
速いレス、ありがとうございました。

cgiファイルとswfファイルは、同じディレクトリーの、異なったフォルダに入っています。

アドバイス事項に載っていた、htmlによる出力については、一度試して見ます。
また、簡単なswf,cgiファイルを作成して、オンライン上でのデータのやりとりと、ローカル上でのデータのやりとりの違いも確かめて見ます。
考えうる方法を、再度試した後、うまくいかない場合また、質問させていただきます。

それで、(ついでに?)自分の中に疑問としてあったものについて少し、列挙します。

ローカル上に置かれたフォルダと、ネット上に置かれたデータが全く一致しているとものとします。
(データをFFFTPでアップロードしただけなので、間違いなく一致していると思います。)
その時、ローカル上からネットサーバ上に置かれたCGIの呼び出しに成功、かつローカル上のswfファイルは、正しく表示されているものを、同様のファイルをネット上からアクセスとすると、正しくCGIによるデータの受け渡しがなされない、という場合に考えうる可能性には、どのようなものがあるのでしょうか?
要するに、swfファイル内に記述してるスクリプトが誤動作を起こしている可能性は、ローカル上からのサーバCGIへのアクセスは成功している事で、『ない』と、思われるのです。
それ故、スクリプトは記述しなかったのですが、とりあえず、swfファイル内に記述している、CGIの呼び出し部分の一つを以下に記述します。

----------------------------------------------------------
cgi_file = "http://cgi.www5b.biglobe.ne.jp/~big-wave/cgi/flash_boad2.cgi";
System.usecodepage = true;
//
function jusin() {
  box1 = new LoadVars();
  box2 = new LoadVars();
  //
  box1.a ="b";//(例)以下、send用プロパティを記述
  //
  box2.onLoad = function() {
    gotoAndStop("loaded");
    //
    if (box2.action == "error") {
      //CGIから"error"が返ってきた場合に対応
      show_disp(box2.message);
      //
    } else if (box2.action == "good") {
      //CGIから"good"が返ってきた場合に対応
      //その後の動作
      msg_set = box2.message.split(">>");
      set_timer();
      //
    } else {
      //onLoadはするが、actionが返ってこなかった場合に対応

      ※ この部分の表示がネット上からアクセスした時、
      ファイル上に出力されてしまいます。
      それで、「Send」は成功するが「ロード」がうまくいかないと
      思ったのです。

      msg = "受信できませんでした。\r";
      for (b in box2) {
        msg += (b+">>"+box2[b]+"\r");
      }
      show_disp(msg);
    }
  };
  //
  box1.sendAndLoad(cgi_file, box2, "POST");
}
//
function show_disp(m){
  問題があった場合のメッセージ内容の出力
  //
}

-----------------------------------------------------------

多分このスクリプトからだけでは、問題点の識別はできないと
思われますが、「onLoad」が成功しているという事実と、それにも関わらず、データが送られてこない、とう事だけは、わかると思われます。


空野大二郎
Åê¹ÆNo.15105
投稿日時: 2005-2-13 4:47
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: CGIのネット上での動作について。
 まいど。

 提示していただいた情報からは、2通りの状況がどちらとも取れる
ように見えます。
 わたしは物わかりがわるいので、はっきりと確認させてください。
Aikawaさんの状況はどちらですか?

<状況A>
 ローカルテスト=成功
 .swf ローカルに配置(制作環境のパソコン)
 .cgi ドメインを取得したサーバに配置

 サーバテスト=失敗
 .swf .cgiと同じドメインのサーバの異なるフォルダに配置
 .cgi ドメインを取得したサーバに配置

<状況B>
 ローカルテスト=成功
 .swf ローカルに配置(制作環境のパソコン.cgiと同じパソコンの
ディレクトリ下の異なるディレクトリに配置)
 .cgi ローカルに配置(製作環境のパソコンでCGIを動かせる
ようにしている)


 サーバテスト=失敗
 .swf .cgiと同じドメインサーバの異なるフォルダに配置
 .cgi ドメインを取得したサーバに配置


 「状況A」で考えられる不具合は、セキュリティの問題に
引っかかっている可能性があります。
 ご利用されているサービス会社の利用条件を参照して、.cgiの
アクセスに不正な動作を実行されていないかご確認下さい。


 「状況B」で考えられる不具合は、.cgiファイルにあると予測
できます。とりあえずは下記の3つです。
1:「アスキーモード」でアップロードされていない。
2:パーミッションがサービス会社の注意事項どおりに設定されて
いない。
3:先頭行のPerlへのパスがサーバー用に記述されていない。

 または、CGIが正常に動作していない事が考えられます。
サーバーにアップロードしたCGIは、Flashを介さずHTMLファイルから、
もしくはアドレスを直接打ち込んで、正常に動作するのかご確認下さい。

引用:
Aikawaさんは書きました:
cgiファイルとswfファイルは、同じディレクトリーの、異なったフォルダに入っています。

?省略?

ローカル上に置かれたフォルダと、ネット上に置かれたデータが全く一致しているとものとします。
(データをFFFTPでアップロードしただけなので、間違いなく一致していると思います。)
その時、ローカル上からネットサーバ上に置かれたCGIの呼び出しに成功、かつローカル上のswfファイルは、正しく表示されているものを、同様のファイルをネット上からアクセスとすると、正しくCGIによるデータの受け渡しがなされない、という場合に考えうる可能性には、どのようなものがあるのでしょうか?



 動作確認をせず、憶測で解決できる可能性が高い場合は、
そのようになさって下さい。
 もし、実地データに基づいた解決法をご利用になりたい場合は、
フォーラム参加者にも再現できるような情報をご提示下さい。
 現在は上記の理由で、Aikawaさんの状況を再現できません。


----------------
空野 大二郎 アニメーター作家
桜の道

空野大二郎
Åê¹ÆNo.15140
投稿日時: 2005-2-13 22:54
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: CGIのネット上での動作について。
 まいど。
 「onLoad」が成功しているという部分を読み飛ばしていました。
 失礼しました。

 データの取得がおできになっているのでしたら、テキスト
フィールドを配置してScrollBarコンポーネントを貼り付け、
LoadVars.onDataイベントハンドラを使って取得したデータを
全て書き出してみてください。

1:構成付与
_root.disp_txt (TextField:取得したデータを表示させる。
テキストの種類:ダイナミックテキスト、変数名:(無記名)、
テキストの塗りカラー:背景色以外の読みやすい色、複数行)

 
引用:
Aikawaさんは書きました:
----------------------------------------------------------
cgi_file = "http://cgi.www5b.biglobe.ne.jp/~big-wave/cgi/flash_boad2.cgi";
System.usecodepage = true;
//
function jusin() {
  box1 = new LoadVars();
  box2 = new LoadVars();
  //
  box1.a ="b";//(例)以下、send用プロパティを記述
  //
  box2.onData= function(source_str) {
    _root.disp_txt.text = source_str;
  };
  //
  box1.sendAndLoad(cgi_file, box2, "POST");
}
//
function show_disp(m){
  問題があった場合のメッセージ内容の出力
  //
}

-----------------------------------------------------------

多分このスクリプトからだけでは、問題点の識別はできないと
思われますが、「onLoad」が成功しているという事実と、それにも関わらず、データが送られてこない、とう事だけは、わかると思われます。


 取得したデータが文字化けしている可能性を、目視で確認できます。


----------------
空野 大二郎 アニメーター作家
桜の道

rin-ko
Åê¹ÆNo.15141
投稿日時: 2005-2-14 0:54
職人
居住地: 東京
投稿: 397
使用環境:
MacOSX10.5/10.4
WinXP SP3
MX2004Pro/CS3
Re: CGIのネット上での動作について。
横から失礼します。
ちょっと気になったのですけれど、現在onLoadに定義されたfunctionだけですと、sendAndLoad() が本当に正しく処理されたかどうかはわからないのではないでしょうか?
onLoadイベントの発生=ロードの成功ではないと理解しているのですけれど、違うのかしら。
ロード処理の結果については、「ロード処理が正常に完了したか (true) または失敗したか (false) を示すブール値」をによった方が、よりよいと思うのですけど、どうでしょうか。
box2.onLoad = function(bSuccess) {
if(bSuccess){
//成功した場合の処理
}
}
もしかしたら全然勘違いしたこと言っているかもしれません。そうでしたらごめんなさい、無視して下さい。
ike_chan
Åê¹ÆNo.15145
投稿日時: 2005-2-14 10:48
新米
居住地: 大阪
投稿: 14
使用環境:
Windows2000
FlashMX
FlashMX2004
Re: CGIのネット上での動作について。
関係ないかも知れませんが、
サーバーによっては、CGIの出力に広告タグが付加される場合があります。
(無料レンタルサーバーとか)
その場合、CGIの出力が、
print "action=hoge";
では、actionの前に広告が付いてしまい、変数名が変わってしまいますので、
print "&action=hoge&";
とすることで、付加される広告と区切って送るようにします。
Aikawa
Åê¹ÆNo.15148
投稿日時: 2005-2-14 12:30
新米
居住地: 埼玉県__居心地と読んでいました...。
投稿: 19
使用環境:
WinXP,FLASH MX,FLASH MX 2004
Re: CGIのネット上での動作について。
さんたび目の訪問をさせていただきます。

一応、自分できる範囲の努力はしてみましたが、
徒労に終わってしまいました…。
何が間違っているのか、どうもよくわかりません。
簡単なスクリプト等で試してもみましたが、やはり無理でした。
以下に、そのサンプルを記述します。

-----------------------------------------------------------
FLASH側

function load_time(){
  dataA ="";//※初期化しています。
  System.usecodepage =true;
  cgi_file ="ここにCGIファイルへのパスを記述";
  //
  box1 =new LoadVars();
  box1.onLoad =function(){
    dataA =box1.dataA;//※左辺は、テキストフィールドの変数です。
  }
  box1.load(cgi_file);
}

この関数をボタンから呼び出す事で、テキストフィールド(dataA)に受信した値を出力します。

ボタン側の記述
on(press){
  load_time();
  //※関数への"パス"には、問題ありません。
}

-----------------------------------------------------------
CGI側(PERL記述)

#!/usr/local/bin/perl

($sec,$min,$hour) =localtime(time);
#現在の時刻を取得

print "Content-type: text/plain\n\n";
print "dataA=$hour:$min:$sec";
#変数dataAとして、フラッシュ側に渡す

_END_

-----------------------------------------------------------

以上が、受信テストのための簡単なスクリプトです。
CGI側の記述は、SHIFT_JIS、\r\nで書かれています。
バーミッションは、CGIファイル、フォルダ共に、755です。
CGIファイルの転送は、アスキーモードで行っています。

それと、CGIへのパスは正しく記述されている思います。
以下にその根拠となるサンプルcgiのアドレスを書きます。
http://www5c.biglobe.ne.jp/~bluewave
簡易掲示板ですが、正しく動作していると思います。

-----------------------------------------------------------

ここで、前後していますが、自分の表現したかった状況を報告します。
(紛らわしい文で、どうもすいませんでした。)
本当に、残念な事に「状況A」のほうです。
「B」ならまだ、やりようがあるのですが、「A」な分、何をすればよいか見当がつきません。
ただ、自分のパソコンにローカルサーバは設置してあり、そこでCGIファイルの動作確認ができるようには、なっています。

それで、上記のスクリプトを
<テストA>
CGIファイルをローカルサーバ上に配置
ローカルフォルダから呼び出す

<テストB>
CGIファイルをネットサーバ上に配置
ローカルフォルダから呼び出す

<テストC>
CGIファイルをネットサーバ上に配置
URLを利用して(ネット上から)呼び出す

※それぞれのswfファイルのCGIパス部分は、テストに応じて変えてあります。

それぞれのテストの結果は、
<テストA> …成功
<テストB> …とりあえず成功
       時刻の出力には成功したが、その後、二度、三度ボタンをプレスしても
       時刻表示が変わらない。
<テストC> …失敗

以下に、このテストのために使用したファイルのアドレスを記述します。
(スクリプトの記述内容は上記の通りです。)
http://www5c.biglobe.ne.jp/~bluewave/time.html
申し訳ないほど、簡単なswfファイルですが、とりあえず本来なら時刻表示ができるはずなのですが…。

-----------------------------------------------------------
>>onLoadの問題に対して

全く、その通りです。
自分でも、onLoad(success)のsuccess部分の効果を無視していました。
つまり、その…、関数onLoad自体は、成功しようが、しまいが後述の内容を実行してしまう、という事実を知りませんでした。
それで、ご指摘部分は、実は、スクリプトを改善して再度、既に試しました。
結果は、successの値がfalseで、やはり受信が成功していませんでした。
その後、受信の成否の一点に絞り、上記のスクリプトで試すことになりました。

-----------------------------------------------------------
>>広告タグの付加問題に対して

これは、多分該当しないように思われます。
広告タグが付加されるサーバを利用していないので…。
(が、一度試してみました。)

-----------------------------------------------------------

自分の中で不安な部分は、パーミッションと、アスキーモードでの転送の部分です。
自分は、この部分の知識が浅いので、マニュアル通り(サーバの指示通り)に、行っています。

一応サンプルが明示されている分、先よりは問題部分の想定がしやすいとは思います…。
上記のスクリプトと、自分の行動過程に動作しない致命的な欠点があったらどうかご指摘ください。

ひろゆき
Åê¹ÆNo.15150
投稿日時: 2005-2-14 13:20
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: CGIのネット上での動作について。
横レス失礼します。

swfが置かれているのは、
 http://www5c.biglobe.ne.jp/~bluewave/
cgiが置かれているのは
 http://cgi.www5c.biglobe.ne.jp/~bluewave/

で、別サーバとみされるか、
cgiを呼び出す際には、絶対パスで呼び出すか、
ではないでしょうか?

http://webryhomepage.biglobe.ne.jp/help/shiyou5b.html


見当違いのことを言ってたら、無視してください。

youich
Åê¹ÆNo.15151
投稿日時: 2005-2-14 14:59
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: CGIのネット上での動作について。
どうもひろゆきさん、にゃあではご無沙汰しております。
引用:

swfが置かれているのは、
 http://www5c.biglobe.ne.jp/~bluewave/
cgiが置かれているのは
 http://cgi.www5c.biglobe.ne.jp/~bluewave/

で、別サーバとみされるか、

ですねー、ドメイン名が一致していないのでFlashPlayerおセキュリティ規制にひっかかります、、、
ちなみに
引用:
http://www5c.biglobe.ne.jp/~bluewave/time.html

ではFlashとサーバー間でどういうやり取りになっているかというと。
・ボタンを押した時(まずcrossdomain.xmlをもらいにいってますね(笑))
GET /crossdomain.xml HTTP/1.1
Host: cgi.www5c.biglobe.ne.jp
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8b) Gecko/20050205 Firefox/1.0+
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

・それに対するサーバーからのレスポンス
HTTP/1.1 403 Forbidden
Server: Zeus/4.2
Date: Mon, 14 Feb 2005 05:31:06 GMT
Connection: close

<HTML>
<HEAD>
<TITLE>CGI File Error Message</TITLE>
</HEAD>
<BODY>
<H1>CGI専用サーバで他の種類のファイルが呼び出されました。</H1>
  http://cgi.www5c.biglobe.ne.jp/<BR>
<BR>
このサーバはCGI実行専門のマシンです。他のファイルは実行できません。<br>
<br>
仕様のページは<a href="http://kingdom.biglobe.ne.jp/help/shiyou.html">こちら</a>をご覧ください。<br>
www5cのFAQは<a href="http://kingdom.biglobe.ne.jp/help/5afaq.html">こちら</a>をご覧ください。<br>
<br>
<br>
※ブラウザの調子が悪いときにエラーとなる場合があります。<br>
 ブラウザを全て閉じてからもう一度アクセスしてみて下さい。<br>
</BODY>
</HTML>


Aikawaさんの先のテストでの失敗と成功の原因は、
引用:
<テストA>
CGIファイルをローカルサーバ上に配置
ローカルフォルダから呼び出す

ローカルからの呼び出しなのでセキュリティ規制にひっかからない。
引用:

<テストB>
CGIファイルをネットサーバ上に配置
ローカルフォルダから呼び出す

キャッシュに残ったデータを読み込んでいる
引用:

<テストC>
CGIファイルをネットサーバ上に配置
URLを利用して(ネット上から)呼び出す

上記の通りドメイン名不一致のため失敗する


----------------
- yo

(1) 2 3 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops