💡
[備忘録12]作って学ぶブラウザのしくみ / HTTPを実装する/ HTTPの構成/ステータスライン
HTTPレスポンスの一行目の部分がステータスライン。
ステータスラインが含んでいる情報
HTTPのどのバージョンを使うか、アクセスの結果、そして結果の説明の3種類。各情報は空白文字で区切られている。
リクエストライン同様RFC7230では以下のように定義されている。
status-line = HTTP-version SP status-code SP reason-phrase CRLF
再びhttp://example.com/index.htmlのwebサイトにアクセスし、成功した時は以下のようになる。
HTTP/1.1 200 OK
200はステータスコードと呼ばれる
ステータスコードの種類
- 1xx: 情報レスポンス (Informational Responses)
- 概要: リクエストを受信し処理中であることを示す中間的な応答。
- 例:
- 100 Continue: クライアントにリクエストの処理を続行するよう指示。
- 101 Switching Protocols: プロトコルの切り替えを示す。
- 2xx: 成功 (Success)
- 概要: リクエストが正常に受理・処理されたことを示す。
- 例:
- 200 OK: リクエストが成功し、期待されるデータが返された。
- 201 Created: 新しいリソースが作成された。
- 204 No Content: 成功したが、返すコンテンツがない。
- 概要: リクエストを受信し処理中であることを示す中間的な応答。
- 3xx: リダイレクト (Redirection)
- 概要: リクエストの完了には別のリソースへのリダイレクトが必要。
- 例:
- 301 Moved Permanently: リソースが恒久的に移動した。
- 302 Found: 一時的に別のリソースにリダイレクトする。
- 304 Not Modified: リソースが変更されていない場合。
- 概要: リクエストの完了には別のリソースへのリダイレクトが必要。
- 4xx: クライアントエラー (Client Errors)
- 概要: クライアントのリクエストに問題があり、処理できない場合を示す。
- 例:
- 400 Bad Request: リクエストが不正。
- 401 Unauthorized: 認証が必要。
- 403 Forbidden: アクセスが禁止されている。
- 404 Not Found: リソースが見つからない。
- 概要: クライアントのリクエストに問題があり、処理できない場合を示す。
- 5xx: サーバーエラー (Server Errors)
- 概要: サーバー側の問題でリクエストを処理できない場合を示す。
- 例:
- 500 Internal Server Error: サーバー内部のエラー。
- 502 Bad Gateway: ゲートウェイやプロキシでのエラー。
- 503 Service Unavailable: サーバーが一時的に利用不可。
- 概要: サーバー側の問題でリクエストを処理できない場合を示す。
ヘッダとは
リクエストとレスポンスの二行目以降、改行だけの行までの部分がヘッダ。1つのヘッダはコロン(:)で区切られたキーバリューのセット。
RFC7230では以下のように定義されている。
header-field = field-name ":" OWS field-value OWS
※OWS = Optional White Space(任意の空白)
ヘッダの順番にきまりはない。
ボディとは
リクエストとレスポンスのヘッダ後の改行以降がボディ。
GETリクエストのボディの形式はRFCで定められていないため、空の場合がほとんど。
GETレスポンスのボディは以下のようにHTMLなどのリソースが含まれる。
HTTP1.1 200 ok
<!DOCTYPE html>
~~~~
~~~
(以下はhtmlが続く)
Discussion