HTTP Header (ヘッダー)

HTTP Header (ヘッダー)

HTTP ヘッダーは、HTTP リクエストとレスポンスで交換されるメタデータである。メッセージの解釈方法、キャッシュ、受け入れ可能なコンテンツタイプ、認証情報、接続動作、Content-Length やエンコーディングなどのエンティティ情報を表す。

カテゴリ リクエスト レスポンス ヘッダー
一般ヘッダー Cache-Control, Connection, Date, Pragma, Trailer, Transfer-Encoding, Upgrade, Via, Warning
リクエストヘッダー × Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, Expect, From, Host, If-Match,
If-Modified-Since, If-None-Match, If-Range, If-Unmodified-Since, Max Forwards, Proxy-Authorization, Range,
Referer, TE, User-Agent
レスポンスヘッダー × Accept-Ranges, Age, ETag, Location, Proxy-Authenticate, Retry-After, Server, Vary, WWW-Authenticate
エンティティヘッダー Allow, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-MD5, Content-Range,
Content-Type, Expires, Last-Modified, extension-header

主なリクエストヘッダー

  • Accept: ブラウザーが受信できるデータ形式(MIME タイプ)をサーバーに伝える。* は「すべて」を意味する。
  • Accept-Charset: ブラウザーが受信可能な文字セットをサーバーに伝える。
  • Accept-Encoding: ブラウザーが受信可能なエンコーディング方式をサーバーに伝える。
  • Accept-Language: ブラウザーが受信可能な言語をサーバーに伝える。
  • Authorization: 認証が必要なリソースへの認証情報を伝える。
  • Host: リクエストが送信されるサーバーのホスト名とポート番号を指定する。HTTP/1.1 で唯一の必須ヘッダーである。
  • If-MatchIf-None-MatchIf-Modified-SinceIf-Unmodified-SinceIf-Range: キャッシュ検証や部分リクエストで使われる条件付きリクエストヘッダーである。
  • Range: サーバーにエンティティの一部だけを要求する。
  • Referer: このリクエストの元になったページの URL を伝える。
  • User-Agent: クライアントアプリケーション名、ブラウザー、OS、バージョン、プラットフォームなどの情報を伝える。

主なレスポンスヘッダー

  • Accept-Ranges: Range リクエストで使用可能な単位をクライアントに伝える。
  • Age: エンティティが生成されてからの推定経過時間(秒)を示す。
  • ETag: エンティティとそのバージョンを一意に識別する識別子を示す。
  • Location: リダイレクト先 URL を示す。
  • Proxy-Authenticate: プロキシサーバーとクライアント間で認証が必要であることを示す。
  • Retry-After: 503 Service Unavailable や 3xx リダイレクトとともに返され、再試行時期を示す。
  • Server: サーバー情報をブラウザーに返す。
  • Vary: サーバー主導型ネゴシエーションで使用されたヘッダー情報を示す。
  • WWW-Authenticate: 認証が必要であることを示す。

主なエンティティヘッダーと一般ヘッダー

  • Allow: リクエスト URL に示されたリソースで使用できるメソッド一覧を提供する。
  • Cache-Control: キャッシュに関する指示を示す。
  • Connection: Keep-Aliveclose など、持続接続の動作を示す。
  • Content-Encoding: gzip などのコンテンツエンコーディング方式を示す。
  • Content-Language: コンテンツの言語を示す。
  • Content-Length: コンテンツ(メッセージ本文)の長さをバイト単位で示す。
  • Content-Location: コンテンツが別 URL でもアクセス可能な場合、その URL を示す。
  • Content-MD5: 通信中にコンテンツが変更されていないか確認するためのチェックデータを示す。
  • Content-Range: 送信するコンテンツの範囲を示す。
  • Content-Type: リソースの MIME タイプを示す。
  • Date: レスポンスを返す時刻を示す。
  • Expires: エンティティの有効期限を示す。
  • Last-Modified: エンティティが最後に更新された時刻を示す。
  • Transfer-Encoding: 転送に使用されるエンコーディング形式を示す。
  • Via: メッセージの伝達経路を示す。
  • Warning: 状態行に追加される警告コードとメッセージを伝える。

仮想ホスト

HTTP/1.1 では仮想ホストがサポートされる。HTTP/1.1 のクライアントは Host ヘッダーでホスト名を送信しなければならない。サーバーは仮想ホストに対応するコンテンツを応答する。これにより 1 台のサーバーで複数の Web サイトをサポートできる。

持続的な接続(Keep-Alive)

初期の HTTP は、HTTP リクエストを送るたびに新しいソケット接続を作っていた。この方法は効率的ではない。持続接続は、1 つの接続内で複数のリクエストを送ることでこの非効率を解決する。

チャンク(chunked)

CGI 結果の返却でコンテンツを生成するときにコンテンツ長が分からない場合など、サーバーはチャンク形式のデータを返すことができる。チャンク形式のデータでは、連続データのバイト数が 16 進数で示される。0 はデータの終わりを意味する。

BASIC 認証

HTTP Basic 認証を使用すると、サーバーはクライアントのリクエストに対して WWW-Authenticate ヘッダーを返す。クライアントはログイン名とパスワードを入力させ、それをエンコードして再度コンテンツを要求する。