LoginSignup
29
16

More than 1 year has passed since last update.

"HTTPヘッダ"が指すものとは

Last updated at Posted at 2020-09-13

普段"HTTPヘッダ"と呼んでるものについて、仕様上は "header fields" と呼ぶらしかったり、自分でも整理できていなかった。

今後もHTTP関連の仕様を読んでいく上でも理解しておきたかったので、この記事では、下記の用語について整理していく

  • HTTP field
  • header/trailer field
  • field line

HTTP セマンティクス

まず、参照するドキュメントについて簡単に補足します。今回触れる用語は、HTTPセマンティクスの仕様である「HTTP Semantics(ドラフト版)」で定義されています。

HTTPセマンティクスとは、HTTPメッセージ(HTTPメソッドや、レスポンスコード、フィールド)の意味の定義です。

各HTTP/1.1~HTTP/3の仕様ではこのHTTPメッセージをどのように送るか(例えば、HTTP/2ではストリーム上のフレームで送信する)を定義している。

もともと、HTTPセマンティクスは「RFC7231 HTTP/1.1: Semantics and Content」でHTTP/1.1の仕様の中でフォーマットとあわせて定義されています。しかし、HTTP/1.1の仕様からセマンティクスの定義を抜き出して、HTTP/2~HTTP/3の仕様から参照できるように文書の整理作業が行われている。

それが、先に紹介した「HTTP Semantics(ドラフト版)」です。

それでは見ていきましょう。

用語

HTTP field

HTTP field (フィールド) とはHTTPメッセージやペイロードに関する情報を伝達する、キー/バリューのデータです(HTTPヘッダと言われて思い浮かべるやつです)
image.png

後述の header fieldtrailer fieldを区別しないときに単にfieldと言います。

またkeyをfield name, valueをfield valueと呼びます。

header field, trailer field

HTTPリクエストやHTTPレスポンスといったHTTPメッセージは、下記のような構造を持ちます。

image.png

  • header section: ボディの前に来るfieldが入る領域
  • content: HTTPボディ。POSTリクエストでアップロードするファイルや、HTTPレスポンスのデータ
  • trailer section: bodyのあとにfieldが入る領域

header sectionにあるfieldがheader fieldである(または単にヘッダと呼ぶ)。trailer sectionにあるfieldがtrailer fieldである。

あまり知られていない機能ではあるが、HTTPではcontentを送った後にtrailerとしてfieldを送ることができる。ここにくるfieldは一般語としてのヘッダーではないので、header field, trailer fieldと呼び分けることになった。

filed line

また、field line (フィールドライン)というものもある。

これは、HTTP/1.1のように : でname/valueを区切った表記のことをfield lineと呼ぶ。

image.png

用例

trailerを使うことは多くはないと思うし、header fieldを指して単に"ヘッダ"と呼ぶのは問題なさそう。ただヘッダ名、ヘッダ値という言い方は適切ではないかもしれない。

Structured Field Values for HTTP」のように、header fieldに限定されないような仕様はfieldという言い回しが正しい (実際、この仕様は「Structured Header」から「Structured Field」に改称された)

参考

これらの整理には多くの議論がされています。疑問点や混乱がある方は、下記が参考になる。
- [http-core] Header terminology #111
- What we call "headers"

29
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
16