HTTPヘッダ 【HTTP header】
概要
HTTPヘッダ(HTTP header)とは、Webコンテンツの伝送に用いられるHTTPで、メッセージの前半にある制御情報を記した領域のこと。WebサーバやWebブラウザが相手方に伝えたい情報を格納する部分で、利用者の目には直接触れない。HTTPでは原則的に、クライアントがサーバへ要求(HTTPリクエスト)を送り、これに応じてサーバがクライアントへ応答(HTTPレスポンス)を返すという形でデータのやり取りが行われる。
リクエストやレスポンスは1行目がスタートライン、続く前半部分が制御情報を記したHTTPヘッダ、後半部分が伝送するデータ本体であるHTTPボディ(body)となっている。HTMLファイルなどWeb上のコンテンツはレスポンスのボディに格納されて伝送される。
スタートライン
HTTPの制御情報はテキスト形式で記述され、最初の1行(先頭から最初の改行コードまで)で要求や応答の内容を簡潔に伝える。この行はHTTPリクエストでは「リクエストライン」、HTTPレスポンスでは「ステータスライン」と呼ばれ、両者を合わせて単にスタートライン(最初の行の意)と呼ぶこともある。
リクエストラインは「メソッド名 要求URLまたはパス プロトコルバージョン」という書式で、「GET https://www.example.jp/index.html HTTP/1.1」のように記述する。ステータスラインは「プロトコルバージョン ステータスコード テキストフレーズ」という書式で、「HTTP/1.1 200 OK」「HTTP/1.0 404 Not Found」のように記述する。
ヘッダフィールド
HTTPヘッダは「ヘッダフィールド」(header field)と呼ばれる項目を改行(CRLF)で区切って列挙した形式で記述される。個々のフィールドは「フィールド名: 値」という簡潔な書式になっている。
リクエストのみで用いるフィールドを「リクエストヘッダ」(request header)、レスポンスのみで用いるものを「レスポンスヘッダ」(response header)、両方で用いるものを「一般ヘッダ」(general header)、ボディ部に格納されているデータについて記述するものを「エンティティヘッダ」(entity header)という。
主なリクエストヘッダには「Host」(送信先のドメイン名とポート番号)、「Referer」(参照元ページのURL)、「User-Agent」(クライアントソフトの識別名)、「Cookie」(ブラウザ側に保存されたサイトデータ)などが、主なレスポンスヘッダには「Server」(Webサーバソフトの識別名)、「Age」(プロキシのキャッシュに存在する時間)、「Set-Cookie」(ブラウザ側にサイトデータを保存)などがある。
一般ヘッダ
主な一般ヘッダとしては「Cache-Control」(キャッシュ制御情報)、「Date」(現在の日付)、「Pragma」(システム固有の拡張制御情報)、「Upgrade」(上位バージョンのHTTPへ切り替え)、「Via」(経由したプロキシの情報)、「Transfer-Encoding」(ボディ部のエンコード形式)などがある。
エンティティヘッダ
主なエンティティヘッダとしては、「Expires」(ローカルキャッシュの有効期限)、「Last-Modified」(最終更新日時)、「Content-Length」(コンテンツの長さ)、「Content-Type」(コンテンツのMIMEタイプ)、「Content-Language」(コンテンツの言語)、「Content-Encoding」(コンテンツのエンコード形式)、「Allow」(そのリソースに許可されたHTTPメソッド)などがある。