社内研修「HTTPから学ぶTCP/IP基礎」(7)

前回まででやっとHTTPリクエストが終わりました。
本日からHTTPレスポンスの説明に入ります。

まず、HTTPレスポンスの構成です。
http7-2

HTTPリクエストと同じく、「開始行」「メッセージヘッダ」「メッセージ本体」の3つで成り立っています。
それでは順番に開始行からみていきます。

開始行

http7-3
HTTPバージョン、ステータスの2つで構成されています。
HTTPバージョンはリクエストの開始行にも入っていましたので、ここでは説明を省きます。

ステータス

3桁のステータスコードとステータスコードの意味が記載されます。
3桁のうち、先頭1桁が応答の種別を表します。

1xx Information リクエストは受け取られ、処理は継続中である
2xx Success リクエストは受け取られ、理解され、受理された
3xx Redirection リクエストを完了させるために、追加的な処理が必要
4xx Client Error クライアントからのリクエストに誤りがあった
5xx Server Error サーバがリクエストの処理に失敗した

それではよく知られているステータスコードについて解説します。

200 OK

リクエストが成功したことを表します。

301 Moved Permanently

サーバを移転してドメインが変わった場合など、恒久的にコンテンツが移動した場合に返します。
ブラウザはこのレスポンスを受取ると、LocationヘッダフィールドのURLを実行します。

302 Found

302は歴史的な経緯があります。
HTTP/1.0では301の恒久的な移動に対して、Moved Temporaryという一時的な移動として定義されており、リダイレクトするリクエストのメソッドは変えてはならないと規定されていました。ところが本来の使い方とは異なる、POSTで登録し、そのレスポンスで302を使用し、GETで画面遷移させる方法が相次いだため、303 See Other、307 Temporary Redirectが追加されました。
なお、現在の302 Foundはリクエストのメソッドを変更することは可能です。

303 See Other

登録後に画面遷移する場合に使用します。
例:ログイン後のTOPページ遷移、登録後の一覧画面遷移など
ただし、実際は上記例のような場合も302 Foundが使われていることが多いです。

307 Temporary Redirect

従来の302 Moved Temporaryの再定義です。302 Foundと違い、メソッドは変えてはいけません。

304 Not Modified

If-Modified-Sinceヘッダを使用したリクエストに対して、対象コンテンツに更新がなかった場合に返却します。ブラウザは304を受け取ると、キャッシュを使用します。

400 Bad Request

リクエストがHTTPリクエストの形式になっていない場合に返却します。前回までにtelnetを使ってHTTPリクエストを送っていましたが、キーを打ち間違えると400が返ってきます。

401 Unauthorized

Basic認証やDigest認証が必要なコンテンツにリクエストをしたことを表します。ブラウザは401を受け取ると、認証ダイアログを表示して、ユーザ名、パスワードの入力を受け付けます。

403 Forbidden

アクセスが禁止されているリソースにリクエストをしたことを表します。4xx番台なのでクライアントエラーなのですが、Webサーバ側の権限設定ミスよって、本来ならアクセスできるはずがアクセスできない、ということもありがちです。

404 Not Found

リクエストしたURLが存在しない場合に返却します。一番身近なエラーコードではないでしょうか。

500 Internal Server Error

サーバで期しないエラーが発生したことを表します。これが発生する場合はWebアプリケーションのバグがないか調べましょう。

503 Service Unavaliable

よくあるのは、アクセス集中でサーバが過負荷になっており、リクエストを処理しきれない場合に発生します。

以上がよく知られている、というか私がよく見かけるステータスコードです。
私は100番台、200以外の200番台のレスポンスを見かけたことがないので、
「こういう場合に100番台が返ってくるよ」というのをご存じの方は教えていただけると嬉しいです(^^)

社内研修「HTTPから学ぶTCP/IP基礎」(7)” に対して1件のコメントがあります。

コメントは受け付けていません。