Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What is going on with this article?
@flano_yuki

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

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

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

  • HTTP field
  • header/trailer field
  • filed 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"

12
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
12
Help us understand the problem. What is going on with this article?