Http-responses
HTTP-応答
要求メッセージを受信して解釈した後、サーバーはHTTP応答メッセージで応答します。
- ステータスライン
- CRLFが後に続く0個以上のヘッダー(一般|応答|エンティティ)フィールド
- 空の行(CRLFの前に何もない行) ヘッダーフィールドの終わりを示す *オプションでメッセージ本文
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
HTTPバージョン
HTTPバージョン1.1をサポートするサーバーは、次のバージョン情報を返します。
HTTP-Version = HTTP/1.1
状態コード
Status-Codeエレメントは3桁の整数です。Status-Codeの最初の桁は応答のクラスを定義し、最後の2桁には分類の役割はありません。 最初の桁には5つの値があります。
S.N. | Code and Description |
---|---|
1 |
要求が受信され、プロセスが継続していることを意味します。 |
2 |
2xx: Success アクションが正常に受信、理解、および受け入れられたことを意味します。 |
3 |
3xx: Redirection これは、要求を完了するためにさらにアクションを実行する必要があることを意味します。 |
4 |
4xx: Client Error これは、リクエストに誤った構文が含まれているか、リクエストを実行できないことを意味します。 |
5 |
5xx: Server Error サーバーが明らかに有効な要求を実行できなかったことを意味します。 |
HTTPステータスコードは拡張可能であり、HTTPアプリケーションはすべての登録済みステータスコードの意味を理解する必要はありません。 すべてのステータスコードのリストは、参照用に別の章に記載されています。
応答ヘッダーフィールド
HTTPヘッダーフィールドを学習するときは、別の章でGeneral-headerとEntity-headerを学習します。 ここでは、Responseヘッダーフィールドが何であるかを確認しましょう。
応答ヘッダーフィールドにより、サーバーは、Status-Lineに配置できない応答に関する追加情報を渡すことができます。 これらのヘッダーフィールドは、サーバーに関する情報と、Request-URIで識別されるリソースへのさらなるアクセスに関する情報を提供します。
- 受諾範囲
- Age
- ETag
- ロケーション
- プロキシ認証
- 再試行後
- サーバ
- Vary
- WWW-認証
独自のカスタムWebクライアントおよびサーバーを作成する場合に備えて、カスタムフィールドを導入できます。
応答メッセージの例
それをまとめて、finddevguides.comで実行されているWebサーバーから hello ページをフェッチする要求のHTTP応答を作成します。
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
次の例は、Webサーバーが要求されたページを見つけられなかった場合にエラー状態を表示するHTTP応答メッセージを示しています。
HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL/tl was not found on this server.</p>
</body>
</html>
以下は、Webサーバーが指定されたHTTP要求で誤ったHTTPバージョンを検出した場合のエラー状態を示すHTTP応答メッセージの例です。
HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>400 Bad Request</title>
</head>
<body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.</p>
<p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>