Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ネットワーク (Network)

HTTPレスポンスの構造や各ヘッダーの概要について

投稿日:2021年3月5日 更新日:

<目次>

(1) HTTPレスポンスの構造や各ヘッダーの概要について
 (1-1) HTTPレスポンスの構造
 (1-2) HTTPレスポンス行について
 (1-3) HTTPレスポンスの各部分の概要
  (1-3-1) 一般ヘッダー
  (1-3-2) レスポンスヘッダー
  (1-3-3) エンティティヘッダー
 (1-4) HTTPレスポンスのボディ部について

(1) HTTPレスポンスの構造や各ヘッダーの概要について

(1-1) HTTPレスポンスの構造

「HTTPレスポンスメッセージ」というのは、「サーバ」から「クライアントのブラウザ」に対して送られるメッセージ(レスポンスやイベントの内容を表したデータ)の事です。構造は大まかには下図のようになっています。

(図111)HTTPレスポンスの構造

(表)HTTPレスポンスを構成する要素

項目 両方or片方
(レスポンスのみ or リクエスト・レスポンス両方に含まれる)
ステータス行 レスポンスのみ
一般ヘッダー 両方にあり
レスポンスヘッダー レスポンスのみ
エンティティヘッダー 両方にあり
ボディ 両方にあり

各部分の概要について1つずつご紹介します。

目次にもどる

(1-2) ステータス行について

URLにアクセスした際のプロトコルやステータスコードが表示される行です。

(構文)

[HTTPプロトコル] [ステータスコード] [Reason-Phrase]

 

■[HTTPプロトコル]
HTTP/1.1などプロトコルの名前が表示されます。

■[ステータスコード]、[Reason-Phrase]
[ステータスコード]は3桁の数字で表現され、リクエストが成功したのか?失敗したのか?をコード値で表現します。ステータスコードは最初の1桁でざっくり以下の区分分けが出来ます。

(表)

100番台(Informational) リクエストが受領され、処理中
200番台(Success) 成功のメッセージ
300番台(Redirection) リクエストを完了するためには、更なる対応が必要。
400番台(Client Error) クライアント側のリクエスト構文誤等の理由でリクエスト不可
500番台(Server Error) サーバ側のリクエスト構文誤等の理由でリクエスト不可
その後ろには[Reason-Phrase]と呼ばれるステータスコードの意味を表す単語が続きます。
 
(例)
HTTP/1.1 200 OK

目次にもどる

(1-3) HTTPレスポンスの各部分の概要

(1-3-1) 一般ヘッダー

リクエスト・レスポンスのいずれにも適用されるヘッダーです。ただし、データ自体には影響せず、主にメタデータの保持に使われます。

<一般ヘッダーの例~>
■Trailer
Trailerに含まれるフィールドのラインナップを示しています。受信者はこの情報から、チャンク(一塊のデータ)の最後のTrailerに何の情報が含まれているのか?を事前に知る事ができます。

(例)

Trailer: Expires

 

■Transfer-Encoding
ボディ部に適用されたされた転送方式(適用があれば)を表します。この転送方式の適用は、送信者と受信者の間でデータを安全に送る目的で行われるものです。

(例)

Transfer-Encoding: chunked

 

目次にもどる

(1-3-2) レスポンスヘッダー

ステータス行では表現しきれない、レスポンスに関する追加のデータを付与するためのヘッダーです。サーバに関する情報や、URIで指定されたリソースに関する追加の情報が記録されています。

<レスポンスヘッダーの例>
■Location
訪問者をリクエストされたURL以外の場所へ「リダイレクト」するためのフィールド(項目)です。ステータスコードが「201」の場合のLocationはリクエストにより作成された、新しいリソースの値になっています。3xxの場合はリダイレクト先のURLの値になっています。

(例)

Location: http://www.rainbow.html

 

■Proxy-Authenticate
ステータスコード=407のレスポンス(クライアントにプロキシ認証を要求)の場合には、このフィールドが必ず含まれいます。

(例:Basic認証の例)

Proxy-Authenticate: Basic realm="Access to the internal site"

目次にもどる

(1-3-3) エンティティヘッダー

ボティ部に関する情報を保持するためのヘッダーです。ボディ部が無い場合は、リクエスト対象のリソースに関する情報が記載されます。

<エンティティヘッダー例>
■ContentEncoding
エンティティボディ部を圧縮する際などに適用された処理などを表します。この情報から、でコードするには何の処理をしなければならないか、を知る事ができます。

(例1)

Content-Encoding: gzip

(例2)

Content-Encoding: compress

 

目次にもどる

(1-4) ボディ部

エンティティボディの情報を保持するためのエリアです。構成としては「メッセージボディ=エンティティボディ+エンティティボディをエンコードしたもの」となっています。

リクエストにメッセージボディがあるかどうか?は「Content-Length」や「Transfer-Encoding」といった情報から推察する事ができます。

レスポンスの場合は、リクエストメソッド(GETなど)やステータスコード(400など)によって含まれるかどうか?が決まります。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ネットワーク (Network)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

公開鍵方式と共通鍵方式の違いや特徴について

  <目次> (1) 公開鍵方式と共通鍵方式の違いや特徴について  (1-1) はじめに  (1-2) 共通鍵方式   (1-2-1) どんな方式?   (1-2-2) 特徴   (1-2- …

SOAP通信の仕組みやHTTPプロトコルとの違いなど

  <目次> (1) SOAP通信の仕組みやHTTPプロトコルとの違いなど  (1-1) SOAPとは?  (1-2) SOAPを構成する要素  (1-3) SOAPの通信の仕組み&HTTP …

SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)

  <目次> (1) SOAP通信のサンプルをご紹介(ASP.NET Web Service=ASMXを使ったHelloWorld)  (1-1) SOAP通信とは?  (1-2) SOAP …

DNATとSNATの違いやそれぞれの特徴について

  <目次> (1) DNATとSNATの違いやそれぞれの特徴について  (1-1) NATとは?  (1-2) SNATとは?  (1-3) DNATとは?  (1-4) 両者の違い(比較 …

FTPのアクティブモードとパッシブモードの違いについて

<目次> (1) FTPのアクティブモードとパッシブモードの違いについて  (1-1) アクティブモード  (1-2) パッシブモード  (1-3) 両者の違い (1) FTPのアクティブモードとパッ …

  • English (United States)
  • 日本語
Top