プロが教える店舗&オフィスのセキュリティ対策術

http://oshiete1.goo.ne.jp/kotaeru.php3?q=554339
を読んだのですが、きちんと text/htmlで出力しているにも関わらず、FireFox、Operaで開くとhtmlソースが出てしまいます。
(win IE、Mac Safariではhtmlとして(きちんと)開かれる)

ソースは以下の通りです。
(テスト用で必ずエラーページを出力するようになっています。)

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

#!/usr/local/bin/perl

require 'cgi-lib.pl';
require 'jcode.pl';
&ReadParse(*form);

$userID = "$form{'id'}"."\n";

open(KEIJI,"<id.dat") || die "File Open Error";
@all = <KEIJI>;
close(KEIJI);

foreach(@all){
#ワードを配列に追加
push @wordList,$_;
}

$messageID = 0;

foreach(@wordList){

if($userID eq $_){
$messageID = $count;
last;
}
$count = $count + 1;
}

if($messageID eq 0){
&error_output;
exit;
}


sub error_output{

print "Contest-type:text/html\n\n";

print << "EOM";

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>

EOM
}
------------------------

要は「このファイルはhtmlです」とプラウザーに
伝えれればいいとは思うのですが、もしお分かりの
方がいらっしゃいましたら、教えていただければ
ありがたいです。

よろしくお願いいたします。

A 回答 (2件)

MIMEタイプが「text/html」ではなく「text/plain」になっているせいでしょう。

サーバが元々登録していないのか.htaccessで自分で変更しているのかな?
わたしも詳しくないので(汗)
    • good
    • 0
この回答へのお礼

ありがとうございます、
確認したところ、「text/plain」では無く、「text/html」になっていました。

お礼日時:2005/01/05 19:05

えと、私はPerlをかけない人間なので的外れかもしれませんが



print "Conte s t-type:text/html\n\n"
「sじゃなくてn」というタイプミスではないかと。
と。

で、もし

Content-Type: text/html; charset=Shift_JIS

を吐き出すなら

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

の行は必要ないような気がします。

P.S.ところで・・・・本当にHTML"2.0"でいいのでしょうか?
    • good
    • 0
この回答へのお礼

すいません、「sじゃなくてn」に修正したら大丈夫になりました!

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
も削除しても大丈夫でした。

HTML"2.0"の行も必要は無いですね・・。

どうもありがとうございました!

お礼日時:2005/01/05 19:01

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