プロが教えるわが家の防犯対策術!

先駆者の皆様、こんばんわ。firefox(ブラウザ)に関するもので、困り果てております。分かる方が居られるかも疑問ですが、皆様のお知恵を拝借させて頂けたら、幸いでございます。

質問は「FireFoxブラウザで特定のcgiのみ、htmlソースがそのまま出力されてしまう」です。

見て頂くのが一番、分かりやすいと思いますので、以下にその掲示板へのリンクを張らせて頂きます。FireFoxをお持ちの方は見てみて下さい。(※1)ソースがそのまま出てますよね。

※1問題の掲示板
http://www.chibamania.com/cgi-bin/bbs2/index.cgi …


・サーバー上で正常に動作しているプログラムもある
・IEだと正常に表示される
・一度htmlとして保存したものは表示される。


まず、IEでは正常に表示されるので、htmlの解釈の違いかなと思いました。でもそれにしては、表示されたソースをコピペしてhtmlとして作成したものはFireFoxでも問題なく見れるのです。(※2)

※2表示されたHTMLを設置(同じサーバー、同じ階層)
http://www.chibamania.com/cgi-bin/bbs2/a.html

掲示板のperlのソースはケントウェブさんからお借りしたもにに少しだけ修正したものを使ってます。同じ症状で苦しんでいる方は居られますか?

とても難解な問題なため、ここですぐに答えがいただけるとは思えませんが、ワラをも掴む思いで質問しました。どうか情報をください。宜しくお願い致します。

A 回答 (3件)

まず、PerlのCGIは正常に動いているようです。


※printではき出されたhtmlがそのままtextで表示されていますが…

まず、私が普段使用しているPerlスクリプトと比較してみて下さい。

↓ここから
#!C:/Perl/bin/Perl

print "Content-Type: text/html\n\n";
print "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n";
print "<HTML>\n";
print "<HEAD>\n";
#ブラウザにキャッシュさせないらしい
print "<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">\n";
print "<META HTTP-EQUIV=\"Content-Type\" content=\"text/html; charset=x_sjis\">\n";
print "<meta name=\"GENERATOR\" content=\"Microsoft FrontPage Express 2.0\">\n";
print "<TITLE>テスト</TITLE>\n";
print "</HEAD>\n<BODY BGCOLOR=\"#CCCCFF\">\n";
↑ここまで

2行目の空行は重要だったりします。

この回答への補足

返信ありがとうございます。
print "Content-Type: text/html\n\n";
は毎回、定型文章として使ってます。

そして今回も当初のソースから修正していないので、大丈夫だと思うのですが。。しかし、HTMLが問題ないとなると、怪しいのはやはりそこですよね。。

2行目の空白、というのはperlスクリプトの中の改行ということでしょうか?ふむ、意味があるのかな。。でもやってみますね。

それでだめなら、ソースを部分的にカットしていって実行、カットして実行、これで検証していくしかなさそうですね。。

補足日時:2006/02/07 13:15
    • good
    • 0
この回答へのお礼

動作しました。
原因は
print "Content-Type: text/html\n\n";
を記述する前に、外部ファイル読み込み時にその中の関数で文字列を出力してしまっていたからでした。その文字列自体は出力されてなかったので、見つかり辛かったです。

というわけで、
print "Content-Type: text/html\n\n";
をする前に文字列を出力していたため、firefoxが判別を間違えていた、ということでした。

ありがとうございました。

お礼日時:2006/02/08 08:41

FireFoxではなくFirefoxです。

これはよく公式フォーラムなどで注意されることがあります。
http://www.mozilla-japan.org/support/firefox/faq …

リンク先でページのソースがそのまま表示される原因は確か、出力形式が原因です。
text/htmlとして出力しなければ正しい表示が行われません。

参考URL:http://www.mozilla.gr.jp/standards/webtips/webti …

この回答への補足

そのあたりはKENT-WEBさんからお借りしたソースなので万全だと思うのですが。。検証してみますね。Firefoxは小文字のときもあるし、日本ではどっちでも良いような気もしますが、できる限り気をつけるようにします。

補足日時:2006/02/07 13:17
    • good
    • 0

私はcgiの経験はありませんが・・・


#1さんのソースにある
print "Content-Type: text/html\n\n";
に相当する文はあるのでしょうか?

ブラウザはこの部分でどう表示すべきか判断していると思います。(送られてきたデータの中身ではなく)

この回答への補足

しっかり書かれているのに動かないということは。。
そこですね。改行コードの違い、などでしょうか。
わかったらご報告いたしますね。

補足日時:2006/02/07 13:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!