• 締切済み

Content-type: text/htmlが表示されてしまう

PerlでCGIを作成しております。 海外のサーバーでCGIをアップしたところなぜかすべてのCGIで Content-type: text/html がページ上部に表示されてしまいます。 そのファイルは日本のサーバーでは問題なく動作しております。 print "Content-type: text/html\n\n"; print "<html><head><title>$site_title</title></head>\n"; 上のようにプログラムは書いております。 これは言語に依存するのですか? ご教示お願いします。

  • Perl
  • 回答数4
  • ありがとう数0

みんなの回答

回答No.4

Content-type: text/htmlが2回でていると起きる現象です。 スクリプトに一回しか書いていないなら サーバがヘッダを全部書いちゃう仕様なのかもしれません(私は見たことがないですが 試しに、そのスクリプトをtelnetで以下のように呼ぶと c:\>telnet xxx.xx.xx 80 GET /cgi-bin/script.cgi HTTP/1.0 [改行] Content-type: text/html が2回出てると思います。 ※http://xxx.xx.xx/cgi-bin/script.cgiの場合

回答No.3

スクリプト内で Content-type: text/html\n\n が2回出力されていませんか?

bakusui
質問者

補足

そうなんです。2回出力してないんですよ。これが・・

  • akino4
  • ベストアンサー率18% (35/185)
回答No.2

Content-type: text/html\r\n\r\n にしてみたらどうなりますか?

  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.1

自鯖のDefaultCharset設定がISO-8859-1だったときにその現象を見たような。。。 文字コードですかね。。。 正直言って私のスキルでは原因判明までに至らないと思うのですが、識者の回答がつくまでの間下記項目ご確認ください。 ・スクリプトを記述した文字コードは? ・シンプルなページを出力するCGIをその文字コードで記述したとき、Content-type: text/htmlが表示されるか。 ・別の文字コードではどうか。 ・動作確認したブラウザは何か。 ・他のブラウザではどうか。

bakusui
質問者

補足

全てためしましたがやはり出ますね・・・ なぜだろう

関連するQ&A

  • "Content-type:text/html;charset=shift_JIS\n\n" がテキスト表示されてしまう。

    CGIで print "Content-type:text/html;charset=shift_JIS\n\n"; を出力すると その文字列がそのままブラウザにテキスト表示され、その後ろの操作、 例えば、 print "Status: 301 Move Permanent\n"; print "Location: http://localhost/file/data-1.lzh\n\n"; も、単純に文字列として表示されてしまいます。 ところが、print "Content-type:text/html;charset=shift_JIS\n\n"; の行を削除すると、 もともとの目的の動作(上記の例ではファイルのダウンロード画面ポップアップ)になります。 このように、print "Content-type:text/html;charset=shift_JIS\n\n";を書かなくて済む (あるいは書かない方が良い場合)というのは、なぜでしょうか。 サーバによっては動作が変わるのでしょうか。 ※そのCGI内で、print "Content-type:text/html;charset=shift_JIS\n\n"; を2行書いてあるというようなことはありません。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGIが動作しません。

    最近、Perlを初めたのですが、 CGIがうまく動作しません。 他のCGIは動作しているので CGIは動作する環境だと思います。 http://からフルパスでCGIを実行しても、 以下のエラーがでます。 -------------------------------------  500 InInternalServerError  サーバーエラーです。  以下の理由が考えられます。  パーミッション等の設定が  間違っている可能性があります。  サイト管理者にお問い合わせ下さい。 ------------------------------------- ちなみに以下のような簡単なCGIも同様です。 ===================================== #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=x-sjis>\n"; print "<title>StartCGI</title></head>\n"; print "<body>\n"; print "<p align=center><font size=4>初めて書いたCGI</font></p>\n"; print "</body></html>\n"; exit; =====================================  なぜなんでしょう。 困ってます。 ご教授の程、宜しくお願い致します。

    • ベストアンサー
    • CGI
  • print "Content-type: text/html\n"; の行方

    以下のようなスクリプトを作ってみました。 #!/usr/local/bin/perl print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; @week = ('Sunday','Monday','Tuesday','Wednesday','Thursday'); print $week[3],"\n"; print "</HTML>\n"; ------------------- 二つ疑問があります。 (1)ブラウザで表示されるページのソースを見ると、<HTML>から始まっています。 print "Content-type: text/html\n"; print "\n"; この部分はどこかにprintされているのでしょうか。 (2)Internet ExplorerとFirefoxでは表示されるのに、Lunascapeではエラーとなり表示されません。 どうしてそうなるのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI
  • perl CGIでのhttpヘッダー出力 (Content-type:

    perl CGIでのhttpヘッダー出力 (Content-type: text/html\n\n) が不要な場合について perlでCGIを作成しています。 多くの場合は、httpのヘッダー出力(Content-type: text/html\n\)を行っています。 毎回ではないですが、HTTPヘッダーの出力が不要な場合が存在します。 (HTMLにContent-type: text/html\n\が出力され表示されます。) そこで、HTTPヘッダーの出力が不要の場合の判断方法を教えていただければと思います。 よろしくお願いいたします。

  • CGIでフォームからの入力内容を表示されない。

    初歩的な質問ですみません。 自宅サーバを使っています。 ■ActivePerl 5.8.8 Build 822 ■httpd142p ------------------------------ ■httpd142p ┗■cgi-bin  ┣■cgi-lib.pl  ┣■test.cgi  ┗■test.html ------------------------------- CGIは動作します。 一行目のパスもあっています。 --------------------------- 【test.cgi】 #!C:/perl/bin/perl #require './cgi-lib.pl'; #&ReadParse(*MYDATA) print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<TITLE>RESULT</TITLE>\n"; print "<BODY>\n"; print "氏名 = $MYDATA{'simei'}\n\n"; print "住所 = $MYDATA{'jyusyo'}\n"; print "</BODY>\n"; print "</HTML>\n"; exit; -------------------------------- 【test.html】 <HTML> <HEAD> <TITLE>TEST</TITLE> </HEAD> <BODY> <P> <FORM ACTION="test.cgi" METHOD="POST"> 氏名:<INPUT TYPE="text" NAME="simei"> 住所:<INPUT TYPE="text" NAME="jyusyo"> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="リセット"> </P> </FORM> </BODY> </HTML> ---------------------------------- ■実行結果 氏名 = 住所 = ---------------------------------- どなたかご教授ください。

    • ベストアンサー
    • CGI
  • Content-type: を切り替える方法

    cgi で、 print "Content-type: text/html\n\n"; で、テキストやINPUT タグ等を表示した後、  print "Content-type: image/jpg\n\n"; で、Content-type を切り替えて画像を表示させ たいのですが、画像イメージがどうもテキストと 認識されるらしく、文字化けのテキストがずらずらっと表示されます。  上の順序を逆にすると今度は画像は表示されるものの、テキスト、タグが表示されなくなります。 どう書けば、両方の表示に対応できるようになるでしょうか。

  • perlで作ったcgiがIE6で西ヨーロッパ言語でエンコードされてしまうのをさけるには?

    お世話になります。 いつもIEで西ヨーロッパ言語が選択されるのですが、 EUCと判別されるにはどのようにすればよろしいでしょうか? 当方、sakuraエディタにてcgiファイルを作成し EUCで保存しています。 コードは以下のコードです。 #!C:/Perl/bin/perl print "Content-type: text/html\n\n"; print "<html>\n"; print "<head><title>hello</title></head>\n"; print "<body>こんにちわ。ようこそcgiの世界へ</body>\n"; print "</html>\n"; _END_

    • ベストアンサー
    • CGI
  • CGIでホームページをランダムに表示したい

    下記のCGIをサーバーに乗せて、Y!とGoogleをランダムに表示したいのですが、もうちょっとというところでうまくいきません。 どなたか心優しい方修正していただけますか? よろしくおねがいします。 - - - - - - - - - - - - - - - #!/usr/bin/perl @page = ( "http://www.yahoo.co.jp", "http://www.google.co.jp/ig", ); $rand_num = int(rand(($#page+1)))+1; foreach(@page){ $i++; if($i == $rand_num) {$file = $_;} } print "content-type:text/html\n\n"; print <<"EOM"; <html lang="ja"><head> <meta http-equiv="content-type" content="text/html; charset=shift_jis"> <title>IFRAME</title> </head></html> EOM

    • ベストアンサー
    • CGI
  • 超初心者 ローカルでOKだったからUPしたら動かない

    超初心者です。 Perlの超入門本で勉強中。 OSはWin98、PerlはCygwinPerl、WebサーバーはANHTTPDです。 ローカルではうまく動作したので、実際にアップロードして動かしてみたのですがうまく動きません。 単に文字を入れて実行ボタンをクリックすると、その文字が表示されるだけという簡単なものなのですが、CGIのソースそのものが表示されてしまうのです。 ソースはこんな感じです。 ==文字を入れるWebページ== <html> <head> <title>実験</title> </head> <body> <form action=http://CGIサーバーのpathとファイル名(a1.pl) method="get" > <p><input type="text" name="data"></p> <p><input type="submit" value="実行"></p> </form> </body> </html> ====== ==Perlのソース(ファイル名はa1.pl)== #!/usr/local/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<title></title>\n"; print "</head>\n"; print "<body>\n"; print $in{'data'}; print "</body></html>"; ===== perlのPathはプロバイダーの指定通り パーミッションも指定された番号に(なにやら755という事なので)しました。 プロバイダーの環境は、 OSはx86 Solaris2.6、Webサーバーはapache/1.3.12、言語はperlVer.5.005_003です。 誰か助けてください。

    • ベストアンサー
    • CGI

専門家に質問してみよう