• ベストアンサー

HTML上でcgiをイメージタグで呼び出すと×が出ます

お世話になっております。 お分かりになる方いらっしゃいましたら、お手数ですがご教授願えますでしょうか? cgiを勉強しているのですが、以下のような感じで テストページを作ってみたところうまくcgiが呼び出せなくて困っています。 test.htmにてcgiをimgタグで呼び出そうとしています。 しかし、ブラウザで表示すると「×」が表示されてしまいます。 【test.htm】 --------------------------------------------------------------- <html> <head> <title>テスト</title> </head> <body> <IMG src="http://www.xxxxx.xx.xx/test.cgi" width="401" height="31" border="0"> </body> </html> --------------------------------------------------------------- ※「xxxxx.xx.xx」はドメイン名が入ります。 【test.cgi】 --------------------------------------------------------------- #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>テスト</title>\n"; print "</head>\n"; print "<body bgcolor=\"#ffcccc\">\n"; print "これはCGIのテストです。\n"; print "</body>\n"; print "</html>\n"; --------------------------------------------------------------- となっています。 ちなみに設置の仕方は以下の通りになります。  html/(レンタルサーバのメインディレクトリ)  │  ├ test.htm ……………………… (755) テストcgi呼出しHTML  │  └ test.cgi …………………… (755) テストcgiファイル 直接test.cgiを指定すると問題なく表示されます。 何か原因が他にあるのでしょうか? お手数ですが宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

><IMG src="http://www.xxxxx.xx.xx/test.cgi" ~~ で呼び出していれば、CGIから返ってくるものがイメージデータでなければ、表示しようがありません。 CGI側の処理を、イメージファイルを転送するものにするなどにすれば表示されるのではないでしょうか? そのままの内容を表示したいのであれば、↑のimgタグ部分を <iframe src="./test.cgi" width="300" height="100"> などのようにすれば表示されると思います。 (そのディレクトリでCGIが実行可能であることが条件ですが…)

nekoB
質問者

お礼

<iframe src="./test.cgi" width="300" height="100">で実行してみたところ、 無事表示できました。ありがとうございました。 ちなみにiframeタグを使わずに、 Scriptタグを使って呼び出す方法もあるようなのですが、こちらはうまくいきませんでした。 <script language="JavaScript" src="http://xxxxx.xx.xx/test.cgi"></script> imgタグのように、イメージが読み込まれるのと一緒で、 bodyなどでonload等をした際に、scriptが読み込まれるような形にしないと動作しないのでしょうか?

その他の回答 (3)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

<script>のタグに記述できるのはscriptです。scriptとはブラウザーが実行するプログラムです。普通はJavaScriptという言語が使われます。 そのcgiはHTMLを出力していますね。従って<script>の中に直接入れてもHTMLの文字列が入るだけで意味がありません<image src=..>の中に直接HTMLの文字列を入れてもだめなのと同じです。   「Scriptタグを使って呼び出す方法もあるようなのですが」 の意味は、cgiが出力するHTMLを解釈して自身の<iframe>や<image>の中身に適切に値をセットするプログラムを記述すれば可能だとの意味だと思います。

nekoB
質問者

お礼

ご回答ありがとうございます。 詳しいご説明ありがとうございました。 大変勉強になりました。 まだcgiに関する知識が乏しいので、 <iframe>を使って出力したいと思います。 <script>や<img>タグはもう少し勉強してから使ってみる事にします。 ありがとうございました。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

Scriptタグを使って呼び出す方法もあるようなのですが、こちらはうまくいきませんでした。 ==> htmlを表示したいのですか。 <script language="JavaScript" src="​http://xxxxx.xx.xx/test.cgi"></script> というふうに書くと下のように展開されるはずです。 <html> <head> <title>テスト</title> <script> <html>\n <head>\n <title>テスト</title>\n" </head>\n <body bgcolor=\"#ffcccc\">\n これはCGIのテストです。\n </body>\n </html> </script> </head> <body> <image> </body> </html> いっている意味分かりますか?

nekoB
質問者

お礼

返信が遅くなりました。 すみません。 <head>の位置で呼び出すとそこでhtmlが展開されてしまうという事でしょうか? 通常<script ~ は<head>の位置で呼びだしますが、 何かscriptとして読みこみたい場合は<body>の位置で呼び出さないと、 うまく読みまれないという事でしょうか? 基本的なことですみません・・・

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

test.cgiはhtmlを吐いていますよね? それをimgで呼び出すこと自体無理があるでしょう。

nekoB
質問者

お礼

ご回答ありがとうございいます。 イメージを呼び出す必要があるのですね…。 良くcgiを呼び出す際はimgタグを使っているので、 どんなcgiでもいけるのだと思っていました…。 ありがとうございます。

関連するQ&A