English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
HTTPリクエストとHTTP応答のフォーマットは非常に似ており、以下のような構造を持っています:
ステータス行で+CRLF(リターンカーロフ)で始まる
ゼロ行または複数行のヘッダーモジュール+CRLF
空行、例えばCRLF
オプションのメッセージボディ、例えばファイル、クエリデータ、クエリ出力
例えば、サーバー応答ヘッダーは以下のようになります:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>.../head> <body> ... </body> </html>
ステータス行にはHTTPバージョン、ステータスコード、およびそれに対応する短いメッセージが含まれています。
以下のテーブルには、サーバーから返される可能性のあるHTTPステータスコードと関連するメッセージが示されています:
ステータスコード | メッセージ | 説明 |
---|---|---|
100 | Continue | サーバーが受け取ったのはリクエストの一部だけですが、サーバーが拒否しない限り、クライアントはそのリクエストを続けます |
101 | Switching Protocols | サーバースイッチングプロトコル |
200 | OK | リクエストが確認されました |
201 | Created | リクエストが完全であり、新しいリソースが作成されます |
202 | Accepted | リクエストは受理されましたが、処理が完了していません |
203 | Non-権威的な情報 | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | ユーザーが選択しアクセスできるリンクリスト、最大サポート5個のリンク |
301 | Moved Permanently | リクエストされたページは新しいURLに移動しました |
302 | Found | リクエストされたページは一時的に新しいURLに移動しました |
303 | See Other | リクエストされたページは異なるURLで見つかります |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | この状態コードはもはや使用されていませんが、状態コードは保留されています |
307 | Temporary Redirect | リクエストされたページは一時的に新しいURLに移動しました |
400 | Bad Request | サーバーがリクエストを認識できません |
401 | Unauthorized | リクエストされたページはユーザー名とパスワードが必要です |
402 | Payment Required | まだこの状態コードを使用できません |
403 | Forbidden | リクエストされたページへのアクセスが禁止されています |
404 | Not Found | リクエストされたページを見つけることができません |
405 | Method Not Allowed | リクエストに指定されたメソッドが許可されていません |
406 | Not Acceptable | サーバーはクライアントが受け入れられない応答を作成することができます |
407 | Proxy Authentication Required | リクエストがサービス前にプロキシサーバーを認証する必要があります |
408 | Request Timeout | リクエストの時間がサーバーが待つ時間を超え、接続が切断されました |
409 | Conflict | リクエストには矛盾があります |
410 | Gone | リクエストされたページは利用できません |
411 | Length Required | "Content-Length"が定義されていないため、リクエストを受け付けません |
412 | Precondition Failed | リクエストの前提条件がサーバーでfalseと評価されました |
413 | Request Entity Too Large | リクエストのエンティティが大きすぎるため、サーバーがリクエストを受け付けません |
414 | Request-url Too Long | URLが長すぎるため、リクエストを受け付けません。POSTリクエストをGETリクエストに変換する際に大量のクエリ情報が付属する場合によく見られます |
415 | Unsupported Media Type | メディアタイプがサポートされていないため、リクエストを受け付けません |
417 | Expectation Failed | |
500 | Internal Server Error | リクエストが不完全であり、サーバーが予期せぬ状況に直面しました |
501 | Not Implemented | リクエストが不完全であり、サーバーが必要な機能を提供しません |
502 | Bad Gateway | リクエストが不完全であり、サーバーが上流サーバーから無効な応答を受け取りました |
503 | Service Unavailable | リクエストが不完全であり、サーバーが一時的に再起動または停止しました |
504 | Gateway Timeout | ゲートウェイタイムアウト |
505 | HTTP Version Not Supported | 指定されたHTTPバージョンがサーバーにサポートされていません |
以下の表はHttpServletResponseクラスで状態コードを設定するためのメソッドを示しています:
S.N. | メソッド & 説明 |
---|---|
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エラーコードをブラウザに渡し、ブラウザが「Need authentication!!!」と表示します。
<html> <head> <title>Setting HTTP Status Code</title> </head> <body> <% // エラーコードを設定し、原因を説明します response.sendError(407, "Need authentication!!!" ); %> </body> </html>
以下のJSPページにアクセスすると、以下の結果が得られます:
他のステータスコードを試してみて、予想外の結果が得られないかどうか確認してください。