- ベストアンサー
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を指定すると問題なく表示されます。 何か原因が他にあるのでしょうか? お手数ですが宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
><IMG src="http://www.xxxxx.xx.xx/test.cgi" ~~ で呼び出していれば、CGIから返ってくるものがイメージデータでなければ、表示しようがありません。 CGI側の処理を、イメージファイルを転送するものにするなどにすれば表示されるのではないでしょうか? そのままの内容を表示したいのであれば、↑のimgタグ部分を <iframe src="./test.cgi" width="300" height="100"> などのようにすれば表示されると思います。 (そのディレクトリでCGIが実行可能であることが条件ですが…)
その他の回答 (3)
- yyr446
- ベストアンサー率65% (870/1330)
<script>のタグに記述できるのはscriptです。scriptとはブラウザーが実行するプログラムです。普通はJavaScriptという言語が使われます。 そのcgiはHTMLを出力していますね。従って<script>の中に直接入れてもHTMLの文字列が入るだけで意味がありません<image src=..>の中に直接HTMLの文字列を入れてもだめなのと同じです。 「Scriptタグを使って呼び出す方法もあるようなのですが」 の意味は、cgiが出力するHTMLを解釈して自身の<iframe>や<image>の中身に適切に値をセットするプログラムを記述すれば可能だとの意味だと思います。
お礼
ご回答ありがとうございます。 詳しいご説明ありがとうございました。 大変勉強になりました。 まだcgiに関する知識が乏しいので、 <iframe>を使って出力したいと思います。 <script>や<img>タグはもう少し勉強してから使ってみる事にします。 ありがとうございました。
- yyr446
- ベストアンサー率65% (870/1330)
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> いっている意味分かりますか?
お礼
返信が遅くなりました。 すみません。 <head>の位置で呼び出すとそこでhtmlが展開されてしまうという事でしょうか? 通常<script ~ は<head>の位置で呼びだしますが、 何かscriptとして読みこみたい場合は<body>の位置で呼び出さないと、 うまく読みまれないという事でしょうか? 基本的なことですみません・・・
- yambejp
- ベストアンサー率51% (3827/7415)
test.cgiはhtmlを吐いていますよね? それをimgで呼び出すこと自体無理があるでしょう。
お礼
ご回答ありがとうございいます。 イメージを呼び出す必要があるのですね…。 良くcgiを呼び出す際はimgタグを使っているので、 どんなcgiでもいけるのだと思っていました…。 ありがとうございます。
お礼
<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が読み込まれるような形にしないと動作しないのでしょうか?