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

前回まででやっとHTTPリクエストが終わりました。
本日からHTTPレスポンスの説明に入ります。
HTTPリクエストと同じく、「開始行」「メッセージヘッダ」「メッセージ本体」の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番台が返ってくるよ」というのをご存じの方は教えていただけると嬉しいです(^^)
1 thoughts on “社内研修「HTTPから学ぶTCP/IP基礎」(7)”
この投稿はコメントできません。