0o0dグッ

Internet Explorerで出るエラー

 Internet Explorerを使っていると以下のようなエラーに度々お目にかかる。これらは IE自身が内部に持っているエラーメッセージであり、インターネットオプションでは「簡易表示」と呼ばれている(英語では "Friendly HTTP Error Messages" だそうだ。どこが friendly なのか教えて欲しい気がするのだが)。簡易と言う割には [ごちゃごちゃ] の部分に長々と説明が続き、実質大して有益なことは何も書かれていないので読むことはない(と筆者は思う)。

 これらのメッセージが出たときにどこに注目すればいいかというと、下図で赤字で表示した個所である。HTTPに続く数字はステータスコード(400番台、500番台はエラーコードと言ってもいいかもしれない)であり、その意味が分かればエラーの原因は大体見当がつくはずである(ここではエラー自体の説明は省略する。AN HTTPDの場合は、こちらのエラーメッセージ集を参考に)。

(追記)最後の、タイトルバーに「無効な構文エラー」と表示されるエラーは、例えば
 http://user:password@hoge.domain.jp/
のように URLにユーザ名/パスワードを付けてアクセスしたときに出る。いつの間にかこの書式は禁止になってしまったようだ。

 IE のインターネットオプションをデフォルトの設定のままで使っていると、サーバからの応答メッセージが上記のような IE 独自のメッセージに置き換えて表示されてしまい、サーバからのステータスコードが何だったかは分かるのだが、エラーメッセージが何であったのかが分からなくなってしまう(要はサーバのレスポンスに関わらず、決まり文句にすり替えられてしまう)。これはエラーの原因追求を返って難しくするお節介以外の何物でもない(と筆者思う)。

 この状況を回避するには IEで ツール -> インターネットオプション -> 詳細設定 -> ブラウズ の「HTTP エラーメッセージを簡易表示する」のチェックを外すことをお勧めする。これでサーバからの本来のメッセージが表示されるようになる。

(注) サーバが長いエラーメッセージ(513バイト以上)を出力する場合には、IEは簡易表示ではなく、サーバのメッセージを表示する仕様になっている(参考1、参考2)。AN HTTPDの場合には 512バイト以下のメッセージのときもあり、本来のメッセージが隠されてしまうことがある。

 自分だけがサーバからの本来のエラーメッセージを表示させたいのなら、上で説明した IEの「簡易表示」のチェックを外せばいいのだが、Webサーバ管理者としては簡易表示の設定に関わらず、全てのユーザにサーバからのメッセージを表示させたいものである。特にエラーメッセージをカスタマイズして表示させる場合には、IEに邪魔をされたくはない。そのためには基本的にはメッセージ長を長くすればよい。簡易表示になるかサーバ自身のメッセージが表示されるかの閾値は、エラー番号によって以下のように異なる。ここで 512とあるのは、512バイト以下なら簡易表示、513バイト以上なら、サーバ自身のメッセージを表示するということを意味する。

	code メッセージ長(バイト)
	400 512
	403 256
	404 512
	405 256
	406 512
	408 512
	409 512
	410 256
	500 512
	501 512
	505 512

 以上はサーバからのステータスコードに応じたエラー表示についてであったが、以下はサーバからのレスポンスが返ってこないときに表示されるエラーについての話である。

 下図左側のメッセージ(「サーバが見つからないか、DNS エラーです」)は普通は URL中のホスト名/IPアドレスに誤りがあるとき、あるいはそのサーバが停止しているときなどに表示される。すなわち、サーバからレスポンスが返ってこない場合である。さらに、CGIが不正なレスポンスを返す様なケース(例えば自作のCGIでレスポンスのヘッダに誤りがあるときなど)にも表示されることがある。

 いずれの場合にもブラウザはサーバから表示すべき HTMLドキュメントを受けたわけでも、エラーメッセージを受けたわけでもないので、ブラウザ自身のメッセージを出すことになる。それが IEでは「サーバが見つからないか、DNS エラーです」というメッセージなのである(ちなみにタイトルバーには「サーバが見つかりません」と出る)。これはインターネットオプションで「簡易表示」するになっているかどうかとは無関係であるし、サーバソフトが何であるかにも関係しない(レスポンスがないからサーバソフトが何であるか分からないので、無関係なのは当然ではあるが)。

 AN HTTPD では CGIの実行時にオプション/一般の「CGI出力を検査」にチェックがないと、CGIでエラーが発生してもサーバはレスポンスを何も返さない。そのような場合にも IEはこのメッセージ(「サーバが見つからないか、DNS エラーです」)を表示する。

 サーバで何か問題が発生したときは、そのことをユーザに知らせるのが親切であると筆者は考える。そのため CGIのテスト中だけでなく、サーバ運用時にも「CGI出力を検査」にはチェックしたままがいいと思う。CGIでエラーが起きるとローカルなパスが表示されることがあるが、パスを知られることがすぐにセキュリティ上の問題になるわけではない。それよりも、サーバが無応答になってユーザに不安感を与えないことの方が重要であろう。もし Webサーバ自身のメッセージが気に入らなければ、エラーメッセージをカスタマイズすればよい。

 上記右側のメッセージ(「取り消されたアクション」)をたまに見かけることがある(筆者は DonutPでは経験があるが純正のIEでも表示されるのかどうかは不明)。何もしていないのに、突然出るなど、全く正体不明なメッセージである。
 一応「ごちゃごちゃ」の個所に書いてあるが、要は「更新」ボタンを押してだめなら、しばらく待てということのようである。
 ちなみに英語版の Windowsでは以下のようなメッセージが表示されるようである。temporarily unavailable と書かれているので、一時的にアクセスできなくなっているということらしい。「サーバが見つからないか、DNS エラーです」とは原因が違うのなら、違いを分かり易く説明して欲しいものである。


Action cancelled

Internet Explorer was unable to link to the Web page you requested.

The page might be temporarily unavailable.


Please try the following:

・ Click the Refresh button, or try again later.

・ If you have visited this page previously and you want to view

what has been stored on your computer, click File, and then click Work Offline.

・ For information about offline browsing with Internet Explorer,

click the Help menu, and then click Contents and Index.