Zenn
💡

[備忘録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

ログインするとコメントできます