ステータス応答一覧


 

 


HTTP応答パケットの初期応答行はステータス行とも呼ばれ、HTTPバージョン、ステータスコード、そしてそれに関するメッセージからなる。HTTPバージョンとメッセージはエンジン側で生成する(サーブレット仕様の2.3版ではサーブレットがHTTPバージョンを指定できる)ので、サーブレット側が指定するのはステータスコードである。これはsetStatusメソッドでステータスコードを指定する。パラメタは整数型であるが、HttpServletResponseクラスで定義されているコード(またはフィールド)を使ったほうが判りやすい。ステータスコードは以下に一覧で示す(Servlet仕様書ではHTTP仕様書にある307が欠落している)。

 

HTMLでエラー情報をクライアントに返したいとき(指定されたファイルが存在しないとか、フォーム入力データに誤りがあるなど)は、まずsetStatusメソッドを呼んだ後にPrintWriterにそのHTMLメッセージを書き込む。sendErrorメソッドはこれを一度にやってくれる。このメソッドはこのメソッドで指定したメッセージHTML化し、404403などのエラー応答としてくれる。

 

sendRedirectメソッドは新しいドキュメントのURLを示すLocationヘッダを付けた302応答を生成してくれる。

 

添付資料にあるステータスコードのうち、HTTP/1.1で新しく規定されているものをHTTP/1.0クライアントに返してはならない。これはプログラマの責任である。あらかじめHttpServletRequest.getProtocolメソッドでクライアントのバージョンを確認することが好ましい。

 

 

 

 

ステータスコード

HttpServletResponseフィールド

メッセージ

意味

100

SC_CONTINUE

Continue

該要求を継続してよい ( HTTP 1.1で追加)

101

SC_SWITCHING_PROTOCOLS

Switching Protocols

サーバが上のバージョンで対応したいのでクライアントでプロトコルを変えてほしい( HTTP 1.1で追加)

200

SC_OK

OK

総て問題なし。要求に対するドキュメントを返す。これはデフォルトであり、サーブレットが特にsetStatussendErrorで指定しなければエンジンはこのステータス行を生成する。

201

SC_CREATED

Created

サーバがドキュメントを生成した。LocationヘッダでそのURLを示す。

202

SC_ACCEPTED

Accepted

要求を受理したが処理は終了していない。

203

SC_NON_AUTHORITATIVE_INFORMATION

Non-Authoritative Information

ドキュメントは通常どおり返すが、ドキュメントのコピーが使われているので応答ヘッダ行のいくつかは正しくない可能性がある。( HTTP 1.1で追加)

204

SC_NO_CONTENT

No Content

新しいドキュメントが存在しないのでブラウザはその前の表示を継続のこと。これはユーザが周期的にあるページを再ロードする場合に有用であり、この前に読み出したページがすでに更新済みであることが判る。ただし、Refreshヘッダ行やそれと等価な<META HTTP-EQUIV="Refresh" ...> で自動的に再ロードされるページでは、このステータスコードを返すと以降の最ロードを停止させるので注意。しかし、Javaスクリプトベースの自動再ロードにおいてはかかる場合でも機能する。

205

SC_RESET_CONTENT

Reset Content

新しいドキュメントは無いが、ブラウザはドキュメント画面をリセットしなければならない。これはブラウザにCGIフォームフィールドのクリアをさせるのに使われる。( HTTP 1.1で追加)

206

SC_PARTIAL_CONTENT

Partial Content

クライアントがRangeヘッダ行をつけて部分要求を送ってきたため、サーバはこの要求を満足させる。( HTTP 1.1で追加)

300

SC_MULTIPLE_CHOICES

Multiple Choices

要求されたドキュメントは複数存在する。これらのリストを返すドキュメントに含める。サーバとして好ましいものがあれば、それはLocation応答ヘッダ行にリストしなければならない。

301

SC_MOVED_PERMANENTLY

Moved Permanently

要求されたドキュメントはほかに移ってしまっている。移った先のURLLocation応答ヘッダ行で示してある。ブラウザは自動的に新しいURLにリンクしなければならない。

302

SC_MOVED_TEMPORARILY

Found

301と類似しているが、URLは一時的な代替で、永久的な移動ではないと解釈しなければならない。注意:このメッセージはHTTP/1.0では"Moved Temporarily"だったが、HttpServletResponseにおける定数もSC_MOVED_TEMPORARILYとなっており、SC_FOUNDではない。ブラウザが自動的に新しいURLにリンクしてくれるので非常に有用である。従ってsendRedirectと専用のメソッドが用意されている。response.sendRedirect(url)を使う場合はresponse.setStatus(response.SC_MOVED_TEMPORARILY)response.setHeader("Location", url)を使う場合より二つの利点が生じる。最初に、この方が簡単だということであり、二つ目としてとしてsendRedirectを使うと自動的にリンク先を示すページを生成してくれることで、これはリダイレクションの効かない古いタイプのブラウザに新しいリンク先を表示させる。最後にsendRedirectは相対URLを処理でき、これを絶対URLに変換してくれる。注意:このステータスコードは301と互換可能なものとして時々使われる。例えば、ユーザが最後のスラッシュを忘れて間違えてhttp://host/~userのように要求してしまったとき、サーバによっては301を返すものと302を返すものが存在する。技術的に云えば元の要求がGETであったときのみブラウザは自動的にリダイレクションに従うことが期待されている。詳細は307ヘッダの項を参照のこと。

303

SC_SEE_OTHER

See Other

301/302と類似。ただし元の要求がPOSTであって、Locationヘッダ行に指定されているリダイレクトのドキュメントはGETで取得しなければならないところが違う。( HTTP 1.1で追加)

304

SC_NOT_MODIFIED

Not Modified

クライアントはキャッシュしたドキュメントを保有しており、条件付の要求(通常If-Modified-Since要求ヘッダ行でこの日付よりアップデートされたものを要求する)をしてきた。サーバがその課や主されている古いドキュメントが引き続き使われるべきであるとクライアントに伝える時に使用する。

305

SC_USE_PROXY

Use Proxy

要求されたドキュメントをLocationヘッダでリストアップされたプロキシを介して取得されたいことをクライアントに通知する。( HTTP 1.1で追加)

307

定義なし

Temporary Redirect

これは302 ("Found" または "Temporarily Moved")と同じ。これは、あまりに多くのブラウザが、元のメッセージがPOSTであったにもかかわらず302応答のリダイレクションに従ってしまった為(POST要求に対しては303応答にのみ従わねばならないことになっていた)、HTTP/1.1で追加されたものである。この応答はあいまいさを排除するため、303応答にはもとの要求がGETでもPOSTでもリダイレクションに従うが、307応答にはGET要求に対するもののみリダイレクションに従うものとしたものである。注意:何らかの理由により、このステータスコードに対する定数がHttpServletResponseに存在していない。( HTTP 1.1で追加)

400

SC_BAD_REQUEST

Bad Request

その要求には文法上の誤りがある。

401

SC_UNAUTHORIZED

Unauthorized

クライアントがその為の認証をしないでパスワードの保護のかかったページをアクセスしようとした。応答には、WWW-Authenticateヘッダ行を含め、 ブラウザがこれを使ってユーザ名とパスワードのダイヤログボックスをポップアップさせる。今度はそれによりAuthorization ヘッダ行をつけてサーバに再要求することになる。

402

SC_PAYMENT_REQUIRED

Payment Required

このリソースの取得には料金が必要である。

403

SC_FORBIDDEN

Forbidden

そのリソースは認証に係わらず取得できない。これはしばしばサーバ側でファイルの不良やディレクトリが許可されていないなどによる。

404

SC_NOT_FOUND

Not Found

そのアドレスではリソースが存在しない。「そんなページは無い」場合の標準的応答である。これも一般的で有用な応答なのでHttpServletResponse: sendError(message)という特別なメソッドが用意されている。setStatusに比べてsendErrorを使うとサーバが自動的にブラウザにエラーメッセージを表示するようにエラーページを生成してくれることである。

405

SC_METHOD_NOT_ALLOWED;

Method Not Allowed

要求されたメソッド(GET, POST, HEAD, DELETE, PUT, TRACE, etc.)は該リソースでは許されていない。( HTTP 1.1で追加)

406

SC_NOT_ACCEPTABLE

Not Acceptable

クライアントがAcceptヘッダ行で指定したMIMEタイプと互換性の無いMIMEタイプで該リソースを生成した。( HTTP 1.1で追加)

407

SC_PROXY_AUTHENTICATION_REQUIRED

Proxy Authentication Required

401と類似だが、プロキシサーバはProxy-Authenticateヘッダを返さなければならない。( HTTP 1.1で追加)

408

SC_REQUEST_TIMEOUT

Request Timeout

クライアントがその要求を送信するのに時間をかけてしまった。( HTTP 1.1で追加)

409

SC_CONFLICT

Conflict

通常PUT要求の結果発生する。正しくないバージョンのファイルをアップロードしようとした場合に使う。( HTTP 1.1で追加)

410

SC_GONE

Gone

ドキュメントが無くなっている。転送すべきアドレスもわからない。404応答と異なる点は、この場合永久に無くなったことで、404のように不明の理由で取得できないということではない。( HTTP 1.1で追加)

411

SC_ LENGTH_REQUIRED

Length Required

クライアントがContent-Lengthヘッダで長さを通知しないとサーバはその要求を処理できない。( HTTP 1.1で追加)

412

SC_PRECONDITION_FAILED

Precondition Failed

要求ヘッダにある前条件のどれかに誤りがある。( HTTP 1.1で追加)

413

SC_REQUEST_ENTITY_TOO_LARGE

Request Entity Too Large

要求されたドキュメントが現在サーバが処理したいサイズを超えている。サーバが後でそれを処理できる場合はRetry-After ヘッダをこの応答に含めねばならない。( HTTP 1.1で追加)

414

SC_REQUEST_URI_TOO_LONG

Request URI Too Long

そのURLは長すぎる。( HTTP 1.1で追加)

415

SC_UNSUPPORTED_MEDIA_TYPE

Unsupported Media Type

要求のフォーマットが未知である。( HTTP 1.1で追加)

416

SC_REQUESTED_RANGE_NOT_SATISFIABLE

Requested Range Not Satisfiable

クライアントが満足できないRange ヘッダ行の要求をした。( HTTP 1.1で追加)

417

SC_EXPECTATION_FAILED

Expectation Failed

Expect 要求ヘッダの値が合致できない。( HTTP 1.1で追加)

500

SC_INTERNAL_SERVER_ERROR

Internal Server Error

「サーバどうしてよいかわからなくなった」ときの総称的メッセージ。CGIプログラムやサーブレットがクラッシュしたり正しくない書式のヘッダを返した場合に生じる。

501

SC_NOT_IMPLEMENTED

Not Implemented

サーバがその要求を満足させるための機能的を有さない。例えば、クライアントがそのサーバがサポートしないPUT指令を発した時などに使う。

502

SC_BAD_GATEWAY

Bad Gateway

プロキシやゲートウェイとして動作するサーバが使う。最初のサーバがリモートのサーバから正しくない応答を受理したことを示す。

503

SC_SERVICE_UNAVAILABLE

Service Unavailable

サーバが保守や過負荷のために現在応答できない。たとえば、スレッドやデータベースの接続プールを全部使い切っている場合など。サーバはRetry-After ヘッダ行をつけることができる。

504

SC_GATEWAY_TIMEOUT

Gateway Timeout

プロキシやゲートウェイとして動作するサーバが使う。最初のサーバがリモートのサーバから所定の時間内に応答しなかったことを示す。( HTTP 1.1で追加)

505

SC_HTTP_VERSION_NOT_SUPPORTED

HTTP Version Not Supported

サーバがHTTP表示のバージョンに対応できない。( HTTP 1.1で追加)

 

 

 

前節     目次     次節