📚

【3分間HTTP&メールプロトコル基礎講座】第6、7回メッセージヘッダの種類と役割、メッセージヘッダ

2023/02/17に公開

メッセージヘッダの種類と役割

メッセージヘッダの役割

  • HTTPのやりとりに情報をつけるため
    • リソースの更新日
    • データ料
    • 使用しているメディア
    • UAの種類
    • 認証
    • 中継

メッセージヘッダの種類

メッセージヘッダ: ヘッダ名+内容+改行

  • メッセージヘッダは必要な数だけ開始行の後ろに入れれる
  • 最後に改行コードを入れる
  • メッセージヘッダの種類には中継された場合の扱いと、メッセージヘッダの内容によって分類される

中継された場合の扱いによるメッセージヘッダの分類

エンドツーエンド

  • 中継されてもメッセージヘッダがが変更されないもの

ホップバイホップ

  • 中継サーバで変更されたり、中継サーバだけで使用されたりする

メッセージヘッダの内容による分類

  • メッセージヘッダの内容は、一般、要求、応答、エンティティの4種類が存在する。

一般

  • リクエスト・レスポンスの両方で使用されるメッセージ。
  • 代表例はキープアライブで使用するConnectionなど

要求

  • リクエストだけで使用

応答

  • レスポンスだけで使用

エンティティ

  • ボディにあるリソースの長さや使われているメディア

メッセージヘッダ

代表的なメッセージヘッダ

Host

  • HTTP1.1のリクエストで唯一必須のメッセージヘッダ
  • 要求ヘッダのエンドツーエンドメッセージヘッダ
  • リクエストを送るサーバのドメイン名とポート番号を示す
  • ポート番号がWell-Knownの80番の場合はポート番号を省略できる。
  • リクエストのリクエストURIが相対パスの場合、このHostに書かれているサーバのリソースと判断される

User-Agent

  • リクエストしてきたUAをサーバ側で判断し、表示させるページを変える時などに使用する
  • 携帯電話の場合、そのキャリアが使用するIPアドレスが決まっているから、送信元IPアドレスを見て切り替える方式もある

Referer

  • 要求ヘッダのエンドツーエンドメッセージヘッダ
  • リクエストURIの参照元ページのURI
    • リクエストURIにハイパーリンクしたペジのURI
  • そのページへどこからハイパーリンクされてきたかという情報を集めることができる
  • webサイトの「アクセス解析ツール」とかで確認できる「リンク元」「アクセス元」など
  • リンクされた場合にのみつけられる。
  • 直接URIを入力した場合や、ショートかっと(ブックマーク)から選んだ場合はつけられない。

Content-Length

  • エンティティヘッダのエンドツーエンドメッセージヘッダ
  • リクエスト、レスポンスどちらでも使われる
  • ボディのデータ長を示すメッセージヘッダ
  • レスポンスはリクエストのURIのリソースの長さ
  • リクエストのメソッドがPOSTの場合、ボディに入っている、「投稿」するデータの長さ

Accept

  • エンドツーエンド
  • 要求するリソースメディアタイプを示す
    • メディアタイプはソースの中身がなんであるかを示すもの
    • テキストファイル、画像ファイル、音声ファイル、動画ファイルなど
    • タイプ/サブタイプの形で記述される
    • UAはAcceptで利用可能なメディアタイプをサーバに通知

Content-type

  • エンドツーエンド
  • 応答するリソースメディアタイプを示す
  • サーバはレスポンスに入れたリソースのメディアタイプをContent-typeで指定する
  • レスポンスでの必須ヘッダ

例えばUAがAcceptで送ったメディアタイプと、サーバがレスポンスできるリソースのメディアタイプが違うと、406 not Acceptableというステータスコードで利用出来ないことを通知する

Discussion