English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
HTTPリクエストとHTTP応答メッセージの形式は似ており、以下の構造を持っています:
初期状態行 + 改行符(改行+改行)
タイトル行が0個または複数。+改行符
空白行、つまり改行符。
オプションのメッセージボディ、例えばファイル、クエリデータ、またはクエリ出力。
例えば、サーバーの応答ヘッダーは以下のようになります:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>.../head> <body> ... </body> </html>
ステートラインにはHTTPバージョンが含まれています(この例ではHTTP/1.1)、状態コード(この例では 200)および状態コードに対応する短いメッセージ(この例ではOK)。
以下は、Webサーバーから返される可能性のあるHTTPステータスコードと関連情報の一覧です:
コード | メッセージ | 説明 |
---|---|---|
100 | Continue | リクエストの一部しかサーバーに受け取られていませんが、拒否されていない限り、クライアントはそのリクエストを続けます。 |
101 | Switching Protocols | サーバーがプロトコルを切り替えます。 |
200 | OK | リクエストが成功しました。 |
201 | Created | このリクエストは完全であり、新しいリソースを作成します。 |
202 | Accepted | このリクエストは受理され処理されましたが、処理は不完全です。 |
203 | Non-authoritative Information | |
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"は未定義です。クライアントがContentを含まないリクエストを送信したため、サーバーは処理できません。-Lengthのリクエスト情報 |
412 | Precondition Failed | リクエストで提供された先決条件がサーバーでfalseと評価されました。 |
413 | Request Entity Too Large | リクエストエンティティが大きすぎるため、サーバーはこのリクエストを受け入れません。 |
414 | リクエスト-URL Too Long | URLが長すぎるため、サーバーはこのリクエストを受け入れません。"post"リクエストを長いクエリ情報を持つ"get"リクエストに変換したときに発生します。 |
415 | サポートされていないメディアタイプ | メディアタイプがサポートされていないため、サーバーはこのリクエストを受け入れません。 |
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プロトコル」バージョンをサポートしていません。 |
以下のメソッドは、Servlet プログラムで HTTP 状態コードを設定するために使用できます。これらのメソッドは HttpServletResponse オブジェクトが利用可能です。
番号 | メソッド & 説明 |
---|---|
1 | public void setStatus ( int statusCode ) このメソッドは任意の状態コードを設定します。setStatus メソッドは int(状態コード)を引数として受け取ります。応答に特別な状態コードとドキュメントが含まれている場合、使用する前に PrintWriter 実際に内容を返信する前に setStatus を呼び出す必要があります。 |
2 | public void sendRedirect(String url) このメソッドは 302 応答、新しいドキュメント URL を含む Location ヘッダー。 |
3 | public void sendError(int code, String message) このメソッドは、状態コード(通常は)を送信します。 404),HTML 文書内で自動的にフォーマットされ、クライアントに送信される短いメッセージとともに。 |
以下の例では、 407 エラーコードがクライアントのブラウザに送信され、ブラウザは「Need authentication!!!」メッセージを表示します。
// 必要な java ライブラリをインポート import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import javax.servlet.annotation.WebServlet; @WebServlet("/showError") // HttpServlet クラスを拡張 public class showError extends HttpServlet { // GET メソッドリクエストを処理するメソッド public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // エラーコードと原因を設定 response.sendError(407, "認証が必要です!!!" ); } // POST メソッドリクエストを処理するメソッド public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
今、上記の Servlet を呼び出すと以下の結果が表示されます:
HTTP 状態 407 - 認証が必要です!!!type 状態報告 message 認証が必要です!!! description クライアントはまずプロキシで自身を認証する必要があります(認証が必要です!!!)。 Apache Tomcat/5.5.29 |