none
HTTPエラーの簡易表示 RRS feed

  • 質問

  • はじめまして。へびと申します。
    こちらへの投稿がふさわしくない内容でしたら申し訳ありません。

    WindowsXP Pro SP2とIE6SP2の環境を利用しています。

    IEでブラウジング中、稀に[ページを表示できません]と表示されます。
    簡易エラーページでエラー番号は表示されません。
    インターネットオプションの詳細設定で、
    『HTTP エラー メッセージを簡易表示する』のチェックを外すとエラーなく表示されず、
    目的のWebページが表示されます。

    どういった仕組みでWebページが表示されるのかが分からずに困っております。
    調べても分からず、こちらに質問させていただきました。

    私の力不足のところを、こちらへ頼ってしまい恐縮ですが、
    どなたか、何が起こっているのか技術的なことをご存知の方がいらっしゃいましたら、
    ご教授の程、よろしくお願いいたします。
    2009年6月9日 6:32

すべての返信

  • ページの表示方法は大きく分けて以下の通りと考えております。(経験上です…厳密には違うかも知れませんがそこはご了承下さい)
    ・HTML
    ・javascript
    ・cgi(perlなどで開発されたページ…掲示板やチャットが一例です)、
    C#,VB,JSP(ASP.Net,javaで開発されたページなど…通販、受発注用のWebページなどが代表です)などの各種スクリプト

    そこでへびさんがご投稿されたエラー「ページを表示できません」というのは、
    恐らく画面左下に三角形の中に!が表示されるケースだと思います。(もしくはブラウザの設定によってはポップアップします)

    そのエラーが起こる主な原因はjavascriptです。
    実際10を超えるWebページを開発してきましたが、殆どjavascriptの構文ミスで起こっています。

    実際HTMLに変な構文を書いてもエラーはまず出ません(ボタンとかにスクリプトを埋め込んでいる場合は別ですが)。

    また、cgiやASP,JSPで構文エラーを発生させた場合はページがロード(読み込まれた)したのと同時に実行されますので
    「500 InternalServerError」もしくは、各開発言語特有のエラーが出るケースが殆どです。

    一方javascriptの場合は、エラーが発生しても、Webページのロードが完了した後に実行されるので、
    Webページは表示されています。
    ここが恐らくご投稿された「目的のWebページが表示されます。」に相当します。
    (余談ではありますがエラーがポップアップした場合でも、OKを何回か押せば表示されるケースが多いです)

    ページが表示されて、意図した動きをすると技術者とは言えこのようなエラーを見落としてしまうケースが結構あります。
    お恥ずかしい話、私も何度か見落としております。
    2009年6月9日 10:23
  • 本当にエラーが発生しているのでしょう。
    例えばネットワークの調子が悪かったとかサーバが混み合っていたとか。
    で、設定変更してもう一度開いたときには解消していたとか。
    「F5」リロードをしても同じエラー表示になるようでしたら、なんらか問題があると考えていいです。

    エラーの原因というのはそのたびごとに異なりますから、簡易表示OFFの状態でしばらく使ってみて、
    エラーになったときにどんな説明が書かれているのかじっくり読むといいでしょう。
    2009年6月9日 10:36
  • 技術的とのことなので、技術面はクリアしている前提で書くと、

    大抵のブラウザは、
    サーバがエラーを返却したときに、ブラウザ内部で持っているエラー画面を出力するようになっています。
    これはユーザインターフェースを統一するためだと認識しています。

    IE6の場合は以下を見つけました。
    http://support.microsoft.com/default.aspx?scid=kb;ja;JP294807
    http://support.microsoft.com/kb/218155/ja

    IE内部で保持しているエラー画面を出す条件
    ①レスポンスのステータスコードが400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505のいずれか
    ②レスポンスボディ(またはContent-Length)がレジストリに記載されているバイト数以下(512か256の模様)
    上記の①②両方を満たすレスポンスをサーバが返却したときのようです。

    IE内部で保持している画面のうち「ページを表示できません」が出る条件は
    以下のサイトによると500か501か”無効な構文エラー”のようです。(タイトルバーに注目)
    http://homepage1.nifty.com/yito/anhttpd/ie-message.html

    この機能の是非や人によりまちまちという認識ですが、
    個人的な感覚で言うと、携帯のブラウザの方が
    ブラウザ内部の組み込みのエラー画面を出しやすいという認識です。(ダイアログで「接続できませんでした」を出すとか)
    (古すぎるmovaなどの初期のブラウザは出ない)
    2009年6月9日 18:03
  • jun-fさん

    ありがとうございます。

    ブラウザのエラー表示を確認したところ、画面左下には"!"の表示はなく、
    "ページが表示されました"と表示されている状況でした。

    もう少し詳しくいろいろ調べてみますが、
    他にも何か情報があったら よろしくお願いします。
    2009年6月10日 2:11
  • 佐祐理さん

    ありがとうございます。

    困ったことに、簡易表示をOFFにするとブラウザにエラーページが表示されなくて、
    通信状況も、ping *****(該当のホスト) -tで疎通確認をするのですが、
    途切れることがありません。

    仰るとおり、せめてサーバが返してくるエラーメッセージが確認できれば良いのですが・・・
    とほほです。

    また他に何かご存知でしたらご教授ねがいます。
    2009年6月10日 2:18
  • HTTP ヘッダーにはエラーコードが入っているにも関わらず、コンテンツには目的のものが返って来たりするんでしょうか。
    Fiddler みたいな HTTP キャプチャー ツールで、どんなレスポンスが返ってきているかを確認するといいと思います。

     Fiddler Web Debugger - A free web debugging tool
     http://www.fiddler2.com/fiddler2/

    あるいは、ieHTTPHeaders みたいな IE のプラグインを使うとか。

     Blunck Software
     http://www.blunck.se/iehttpheaders/download.html
     
    2009年6月10日 2:37
  • もしそうだとしたら、(´・ω・`)さんが説明していますが、そのコンテンツが512bytes以下ということになります。
    それはたぶん期待していたコンテンツではない可能性が高いため、先のコメントを書きました。

    pingが返ってくることがWebサーバの健全性を示すことはありません。
    やはり再現待ちするしかないかと。
    2009年6月10日 4:03
  • (´・ω・`)さん

    ありがとうございます。

    教えていただいたWebページを熟読するのに時間がかかってしまって、
    お返事が遅くなりました。

    携帯電話という発想はありませんでした。
    なんとか試してみたいと思います。
    2009年6月11日 1:09
  • totojoさん

    ありがとうございます。

    HTTPキャプチャツール、ご紹介ありがとうございます。
    私の予想が間違っているかどうか、裏づけができそうです。

    ただ、使い方が難しそうなのでちょっとびびってます。
    がんばって使い方を勉強してみます。
    2009年6月11日 9:29