HTTP リクエストと HTTP レスポンスの形式は似ており、どちらも次の構造になっています。
ステータス行 + CRLF (キャリッジリターンとラインフィード) で開始します。
0 行または複数行のヘッダー モジュール + CRLF
CRLF などの空行
ファイル、クエリ データ、クエリ出力などのオプションのメッセージ本文
たとえば、サーバーの応答ヘッダーは次のようになります。
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (空行)<!doctype ...><html><head>...</head><body> ... </body></html>
ステータス行には、HTTP バージョン、ステータス コード、およびステータス コードに対応するショート メッセージが含まれます。
次の表は、サーバーから返される可能性のある HTTP ステータス コードとそれに関連するメッセージを示しています。
ステータスコード | 情報 | 説明する |
---|---|---|
100 | 続く | リクエストの一部のみがサーバーによって受信されますが、サーバーによって拒否されない限り、クライアントはリクエストを続行します。 |
101 | プロトコルの切り替え | サーバースイッチプロトコル |
200 | わかりました | リクエストが確認されました |
201 | 作成されました | リクエストが完了し、新しいリソースが作成されます |
202 | 承認されました | リクエストは受け入れられましたが、処理されませんでした |
203 | 権限のない情報 | |
204 | コンテンツなし | |
205 | 内容をリセットする | |
206 | 部分的なコンテンツ | |
300 | 複数の選択肢 | ハイパーリンク テーブル。ユーザーはハイパーリンクを選択してアクセスできます。最大 5 つのハイパーリンクがサポートされます。 |
301 | 永久に移動されました | リクエストされたページは新しい URL に移動されました |
302 | 見つかった | リクエストされたページは一時的に新しい URL に移動されました |
303 | その他を見る | 要求されたページは別の URL で見つかります |
304 | 変更されていません | |
305 | プロキシを使用する | |
306 | 未使用 | このステータス コードは使用されなくなりましたが、ステータス コードは保持されます。 |
307 | 一時的なリダイレクト | リクエストされたページは一時的に新しい URL に移動されました |
400 | 要求の形式が正しくありません | サーバーがリクエストを認識しません |
401 | 無許可 | 要求されたページにはユーザー名とパスワードが必要です |
402 | 支払いが必要です | このステータス コードはまだ使用できません |
403 | 禁断 | 要求されたページへのアクセスは禁止されています |
404 | 見つかりません | サーバーは要求されたページを見つけることができません |
405 | 許可されていないメソッド | リクエストで指定されたメソッドは許可されていません |
406 | 受け入れられない | サーバーは、クライアントが受け入れられない応答のみを作成できます。 |
407 | プロキシ認証が必要です | リクエストを処理するにはプロキシ サーバーを認証する必要があります |
408 | リクエストタイムアウト | リクエスト時間がサーバーの待機時間を超えたため、接続が切断されました。 |
409 | 対立 | リクエストに矛盾があります |
410 | 消えた | 要求されたページはもう利用できません |
411 | 必要な長さ | 「Content-Length」が定義されていないため、サーバーはリクエストの受け入れを拒否しました |
412 | 前提条件が失敗しました | 要求された前提条件はサーバーによって false と評価されました。 |
413 | リクエストエンティティが大きすぎます | 要求されたエンティティが大きすぎるため、サーバーは要求の受け入れを拒否しました。 |
414 | リクエスト URL が長すぎます | URL が長すぎるため、サーバーはリクエストの受け入れを拒否しました。 「POST」リクエストを「GET」リクエストに変換するときに、大量のクエリ情報が表示されることがよくあります。 |
415 | サポートされていないメディア タイプ | メディアタイプがサポートされていないため、サーバーはリクエストの受け入れを拒否しました |
417 | 期待は外れました | |
500 | 内部サーバーエラー | リクエストが不完全で、サーバーで予期しない状況が発生しました。 |
501 | 未実装 | リクエストは不完全であり、サーバーは必要な機能を提供していません |
502 | 不正なゲートウェイ | リクエストは不完全で、サーバーは上流サーバーから無効な応答を受け取りました。 |
503 | サービスは利用できません | リクエストは不完全であり、サーバーは一時的に再起動またはシャットダウンされています。 |
504 | ゲートウェイのタイムアウト | ゲートウェイのタイムアウト |
505 | HTTP バージョンはサポートされていません | サーバーは指定された HTTP バージョンをサポートしていません |
次の表に、HttpServletResponse クラスでステータス コードを設定するために使用されるメソッドを示します。
SN | 方法と説明 |
---|---|
1 | public void setStatus (int statusCode)このメソッドは、任意のステータス コードを設定できます。応答に特別なステータス コードとドキュメントが含まれている場合は、PrintWriter で何かを返す前に必ず setStatus メソッドを呼び出してください。 |
2 | public void sendRedirect(String url)このメソッドは、302 応答とLocationヘッダーを生成して、URL に新しいドキュメントを伝えます。 |
3 | public void sendError(int code, String message)このメソッドは、ステータス コード (通常は 404) と短いメッセージを HTML ドキュメントに自動的に挿入し、クライアントに送り返します。 |
次の例では、407 エラー コードがブラウザに送信され、ブラウザは「認証が必要です!!!」というメッセージを表示します。
<html><head><title>HTTP ステータス コードの設定</title></head><body><% // エラー コードを設定し、その理由を説明します response.sendError(407, "認証が必要です!!!" ) ; %></body></html>
上記の JSP ページにアクセスすると、次の結果が得られます。
他のステータス コードを使用して、予期しない結果が得られるかどうかを確認することもできます。