コンテナやブラウザがHTMLページを生成するステータス・コード


 


とりあえずWebSpereテスト環境上のTomcat 3.2.1でメソッドとブラウザの相違でどうなるか調べると下表のようになる。これは比較的使うであろうと思われる400405についての調査結果である。

 

Tomcat 3.2.1(Standalone)

ステータス・コード

 

IE(HTTP/1.1)

IE(HTTP/1.0)

Netscape

SC_BAD_REQUEST(400)

sendError

「ページが見つかりません」をブラウザが表示

「ページが見つかりません」をブラウザが表示

エンジンが作った「Error: 400」をブラウザが表示

setStatus

「ページが見つかりません」をブラウザが表示

「ページが見つかりません」をブラウザが表示

「コード:400 SC_BAD_REQUESTを返します」を表示

SC_UNAUTHORIZED

(401)

sendError

ユーザ名とパスワード要求のログインページをエンジンが作成(http://localhost:808 0/examples/jsp/secur ity/login/login.jsp)

ユーザ名とパスワード要求のログインページをエンジンが作成(http://localhost:808 0/examples/jsp/secur ity/login/login.jsp)

ユーザ名とパスワード要求のログインページをエンジンが作成(http://localhost:808 0/examples/jsp/secur ity/login/login.jsp)

setStatus

「コード:401 SC_UNAUTHORIZEDを返します」を表示

「コード:401 SC_UNAUTHORIZEDを返します」を表示

ユーザ名とパスワード要求のポップアップウィンドウ表示

SC_PAYMENT_REQUI

RED(402)

sendError

エンジンが作った「Error: 402」をブラウザが表示

エンジンが作った「Error: 402」をブラウザが表示

エンジンが作った「Error: 402」をブラウザが表示

setStatus

「コード:402 SC_PAYMENT_REQ UIREDを返します」を表示

「コード:402 SC_PAYMENT_REQ UIREDを返します」を表示

「コード:402 SC_PAYMENT_REQ UIREDを返します」を表示

SC_FORBIDDEN(403)

sendError

「このページの表示が認められていません」とブラウザが表示

「このページの表示が認められていません」とブラウザが表示

エンジン作成の「SSL required to access this page」をブラウザが表示

setStatus

「このページの表示が認められていません」とブラウザが表示

「このページの表示が認められていません」とブラウザが表示

「コード:403 SC_FORBIDDENを返します」を表示

SC_NOT_FOUND(404)

sendError

「ページが見つかりません」とブラウザが表示

「ページが見つかりません」とブラウザが表示

エンジンが作った「Not Found (404)」とアドレス情報などをブラウザが表示

setStatus

「ページが見つかりません」とブラウザが表示

「ページが見つかりません」とブラウザが表示

「コード:404 SC_NOT_FOUNDを返します」を表示

SC_METHOD_NOT_

ALLOWED(405)

sendError

「ページを表示できません」とブラウザが表示

「ページを表示できません」とブラウザが表示

エンジンが作った「Error: 405」をブラウザが表示

setStatus

「ページを表示できません」とブラウザが表示

「ページを表示できません」とブラウザが表示

「コード:405 SC_METHOD_NOT _ALLOWEDを返します」を表示

 

これから以下のようなことが云えよう。

-      IEではHTTP/1.1HTTP/1.0の相違は生じない。HTTP/1.1で追加されている405もそのまま受理する

-      IEではsetStatusで入力したメッセージは401402ではそのままブラウザに表示されるが、それ以外はブラウザ側で勝手にメッセージを表示する。

-      Netscapeでは401以外はsetStatusで入力したメッセージはそのままブラウザに表示される。

-      コード401に対しては、setStatusの場合はNetscapeはポップアップウィンドウで名前とパスワードを要求し、localhost:8080へのログインを開始する。SendErrorの場合たまたま同じパッケージにログインのJSPページが存在しているので、これが起動する。

-      NetscapeではsendErrorでエンジンが作ったHTMLメッセージはそのままブラウザで表示される。

-      他方IEではsendErrorでエンジンは作ったHTMLメッセージは通常そのとおりはブラウザは表示しない。

 

通常メッセージを入力しないsendError(ステータス・コードのみ)メソッドでは、ブラウザ側で自分が用意しているメッセージ表示されるが、エンジンは何を送信しているかTelnetで確認しよう。以下はその例(Telnetのログ)である。エンジンは一般にそのステータス・コードに対応したメッセージをHTMLで送信する。

Tomcat 3.2.1 (Standalone)

GET /examples/servlet/ReturnStatusCode?code=SC_BAD_REQUEST HTTP/1.0

 

HTTP/1.0 400 Bad Request

Content-Type: text/html

Servlet-Engine: Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.2.2; Windo

ws 98 4.10 x86; java.vendor=IBM Corp.)

 

<head><title>Error: 400</title></head>

<h1>Error: 400</h1>

<h2>Location: /examples/servlet/ReturnStatusCode</h2><b>No detailed message</b><br></body>

GET /examples/servlet/ReturnStatusCode?code=SC_FORBIDDEN HTTP/1.0

 

HTTP/1.0 403 Forbidden

Content-Type: text/html; charset=Shift_JIS

Content-Length: 41

Servlet-Engine: Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.2.2; Windows 98 4.10 x86; java.vendor=IBM Corp.)

 

<h1>SSL Required to access this page</h1>

GET /examples/servlet/ReturnStatusCode?code=SC_NOT_FOUND HTTP/1.0

 

HTTP/1.0 404 Not Found

Content-Type: text/html

Content-Length: 215

Servlet-Engine: Tomcat Web Server/3.2.1 (JSP 1.1; Servlet 2.2; Java 1.2.2; Windows 98 4.10 x86; java.vendor=IBM Corp.)

 

<head><title>Not Found (404)</title></head>

<body><h1>Not Found (404)</h1>

<b>Original request:</b> /examples/servlet/ReturnStatusCode<br><br>

<b>Not found request:</b> /examples/servlet/ReturnStatusCode</body>

 

注: Tomcat 4.0 (Standalone)6月時点でsendErrorはインプリメントされていない。

 

 

前節     目次     次節