- ベストアンサー
FireFox、Operaで出力するとhtmlソースが出てしまう
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です」とプラウザーに 伝えれればいいとは思うのですが、もしお分かりの 方がいらっしゃいましたら、教えていただければ ありがたいです。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MIMEタイプが「text/html」ではなく「text/plain」になっているせいでしょう。サーバが元々登録していないのか.htaccessで自分で変更しているのかな? わたしも詳しくないので(汗)
その他の回答 (1)
えと、私は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"でいいのでしょうか?
お礼
すいません、「sじゃなくてn」に修正したら大丈夫になりました! <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> も削除しても大丈夫でした。 HTML"2.0"の行も必要は無いですね・・。 どうもありがとうございました!
お礼
ありがとうございます、 確認したところ、「text/plain」では無く、「text/html」になっていました。