[12] [DFN[[RUBYB[[[ヘッダー接頭辞]]]@en[header prefix]]]] ([DFN[[[header field prefix]]]])
は、[[拡張宣言]]によって拡張に割り当てられた数値で、
[[ヘッダー名]]の[[接頭辞]]として使われるものです。

* 仕様書

[REFS[
- [1] [CITE@en[RFC 2774 - An HTTP Extension Framework]] ([TIME[2014-09-08 03:36:50 +09:00]] 版) <http://tools.ietf.org/html/rfc2774#section-3>
- [2] '''[CITE@en[RFC 2774 - An HTTP Extension Framework]] ([TIME[2014-09-08 03:36:50 +09:00]] 版) <http://tools.ietf.org/html/rfc2774#section-3.1>'''
]REFS]

* 意味

[3] [[ヘッダー接頭辞]]は、動的に生成された文字列であり、
[[HTTPメッセージ]]中でその[[ヘッダー接頭辞]]から始まる[[ヘッダー]]は、
その[[ヘッダー接頭辞]]の[[拡張宣言]]に所属します。 [SRC[>>2]]

;; [4] [[ヘッダー接頭辞]]は[[拡張宣言]]の [CODE(HTTP)@en[[[ns]]]] [[引数]]で宣言できます。

;; [7] [[ヘッダー接頭辞]]は相互の[[ヘッダー名]]の衝突を防ぎつつ複数の拡張を有効にできるためのものです
[SRC[>>2]]。

* 構文

値は2桁以上の[[ASCII数字]]です [SRC[>>1]]。

[FIG(railroad)[
= [[ASCII数字]]
= +
== [[ASCII数字]]
]FIG]

;; [5] 2桁以上となっているのは、古い[[応用]]が [[RFC 2774]] の拡張の仕組みとは関係なしに使っているものとの衝突の可能性を低くするため [SRC[>>2]] とされています。

[8] [[ヘッダー接頭辞]]は、拡張によって認められている場合を除き、
同じ[[メッセージ]]中で再利用しては[['''なりません''']] [SRC[>>2]]。

[9] [[ヘッダー接頭辞]]の値の生成はできるだけ一貫しているべきです [SRC[>>2]]。

;; [10] これは [CODE(HTTP)@en[[[Vary:]]]] (>>11) のため [SRC[>>2]] とされています。
同じ拡張にはできるだけ同じ値を使うべきということでしょうか?

[14] 
[[SSDP]] ([[UPnP]]) は [[RFC 2274]] のような違うものを実装していて、
ここでの構文とは違います。

* 接頭辞付きヘッダー

[6] [[ヘッダー接頭辞]]を使った[[ヘッダー]]の名前は、[[ヘッダー接頭辞]]と [CODE[[[-]]]]
を最初につけます [SRC[>>2]]。

[FIG(railroad)[
= [[ヘッダー接頭辞]]
= [CODE(HTTP)[[[-]]]]
= 狭義の[[ヘッダー名]]
]FIG]
* 拡張宣言 [CODE(HTTP)@en[ns]] 引数

[19] [[拡張宣言]]の [DFN[[CODE(HTTP)@en[[[ns]]]]]] [[引数]]は、
拡張に関連付けられた[[ヘッダー接頭辞]]を指定するものです。

** 構文

[20] この[[引数]]には[[ヘッダー接頭辞]]が値として必要です [SRC[>>1]]。

* 関連

[11] [[鯖]]は、接頭辞付きヘッダーを [CODE(HTTP)@en[[[Vary:]]]] に指定する時は、
[[ヘッダー接頭辞]]も含めなければ[['''なりません''']] [SRC[>>2]]。

[13] [CODE(HTTP)@en[[[C-Man:]]]] や [CODE(HTTP)@en[[[C-Opt:]]]]
で宣言された[[ヘッダー接頭辞]]を使う[[ヘッダー]]は、
[CODE(HTTP)@en[[[Connection:]]]] に[[ヘッダー接頭辞]]付きで明示しなければなりません。

;; [[拡張宣言]]参照。