勇気を出して告白! その返事で覚えるHTTPステータス・コード

矢崎 茂明=ITpro
初公開日:2009/11/02

なによりうれしい200 OK

 最初にHTTPレスポンスの実例を示す。1行目は以下のようになっている。

HTTP/1.1 200 OK

 見るからにOKな雰囲気である。HTTPにおける実際の意味もOKでよい。GETしたらOK,シンプルである。

 このあとに,サーバーの情報や,リクエストされたコンテンツの内容などが続く。クライアントはそれらを読み取って,HTML Webページを表示したり,画像を表示するなどの処理を実行する。

 例の中にある3ケタの数字を「ステータス・コード」と呼ぶ。200,404,500,503などがある。200番台は,サーバーがリクエストを受け取り,理解したことを意味している。

「好きです」「ないない」とショックな404

 告白がいつもうまくいかないのと同じように,HTTPリクエストの結果がうまくいかないこともある。告白がうまくいかない理由は星の数ほどありそうだが,HTTPでは分類・整理され,3ケタの数字「ステータス・コード」にまとめられている。

 筆者もよく見る,うまく行かない例が

HTTP/1.1 404 Not Found

である。

 HTTPの規格書,RFC2616では「サーバーがリクエストされたURIに一致するものを見つけることができなかった」と解説してある。告白にたとえるなら,「好きです」「ないない,ありえない」という,厳しくも切ない結果といえないだろうか。

 HTTPの世界では,単純なHTMLの誤記か,あるいはかつてそのURLに存在したコンテンツがなくなった場合に,この404 Not Foundによく遭遇する。Web開発者は,404が出たときはすぐに「どのURLにリクエストを送ったのか」を一字一句確認する,よい習慣があるようだ。

「今はダメなの」と切ない503

 もっとショックで切ない告白の結果もある。

HTTP/1.1 503 Service Unavailable

である。

 RFC2616の説明を見てみよう。「サーバーは,一時的な過負荷か,メンテナンス中のため,現在リクエストを扱うことができません」とある。告白にたとえるなら「部活に集中したいの」などの「今はダメ」系の返事である。

 じゃあいつならいいんだよ! とより辛い思いをするのは告白をする男子・女子に共通する思いだろう。RFC2616の続きを読むと注記(Note)として,より恐ろしいことが書いてある。

 「この503ステータス・コードの存在は,サーバーが過負荷のときに常にそれを使わなければいけないということを暗黙的に意味しない。単純に接続を拒否したいと望む(503ステータス・コードを返す)サーバーもあるだろう」

 告白を断るかどうかは,告白された人の自由である。自由ではあるが,なんとも切ない話である。

 筆者の経験では,実際に過負荷であるときに503が利用されるケースが,最近はほとんどのようである。すこし時間をおいて,あるいは相手先サーバーの負荷が低いだろうと想像できる時間まで待って,同じリクエストを送れば「200 OK」,つまり期待したレスポンスをもらえる場合が多い。

告白された相手がパニくる500

 ユーザーとしてWebを利用しているときに遭遇するステータス・コードは,これまで紹介した200,404,503がほとんどだろう。一方,Webプログラマとして,とくにCGIを利用したプログラムを開発するとき,もっともよく遭遇するのが

HTTP/1.1 500 Internal Server Error

だろう。RFC2616では「リクエストを実行するときに予測しない状態に遭遇した」と解説している。告白にたとえるなら「好きです,つきあってください」「あっ,あのあたし…あわわわわ」と相手が混乱してしまい,返事がもらえなかったようなものだ。

 「それはそれで萌える」……かどうかはさておき,エラーであり,期待しない動作である。Web開発者は,エラーのログをチェックするなどして,まずWebサーバーを介してプログラムが正しく実行されるよう修正する。

 自分がユーザーとして500 Internal Server Errorに遭遇した場合,対処できることはほとんどない。リクエストに付加する引数などを変えて試すことで,エラーを回避できる場合はあるかもしれないが,回避できるかどうかが保証されているわけではない。もしそれが重要なリクエストだった場合は,管理者に連絡するのがよいだろう。

関連キーワード

この記事に対する読者コメント

コメントに関する諸注意 コメントを書く