[13] [DFN[[RUBYB[擬似ヘッダー]@en[pseudo-header]]]]は、
[[対象URL]]、[[要求メソッド]]、[[状態符号]]を表す特別な[[ヘッダー]]です。

* 仕様書

[REFS[
- [1] [CITE@en[RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)]] ([TIME[2015-05-15 10:14:54 +09:00]] 版) <https://tools.ietf.org/html/rfc7540#section-8.1.2.1>
]REFS]

* 意味

[3] [DFN[[RUBYB[擬似ヘッダー欄]@en[pseudo-header field]]]]は、
[[対象URL]]、[[要求メソッド]]、[[状態符号]]を表すものです [SRC[>>1]]。

;; [2] [[HTTP/1.1]] [[以下]]の[[開始行]]に相当します [SRC[>>1]]。

[5] [[擬似ヘッダー]]は、[[HTTPヘッダー]]ではありません [SRC[>>1]]。

* 構文

[4] [[擬似ヘッダー]]の名前は、 [CODE[[[:]]]] から始まります [SRC[>>1]]。

;; [6] [CODE[[[:]]]] は [[HTTP/1.1]] [[以下]]では[[ヘッダー名]]と値の区切り文字で、
[[ヘッダー名]]には使えませんでした。

[11] [[擬似ヘッダー]]は、 [[header block]] の通常の[[ヘッダー]]の前になければ[['''なりません''']] [SRC[>>1]]。

* 文脈

[7] [[エンドポイント]]は、[[HTTP/2]] で定義されていない[[疑似ヘッダー]]を[[生成]]しては[['''なりません''']] [SRC[>>1]]。

[8] [[疑似ヘッダー]]は、その定義されている文脈でのみ妥当であり、
[[要求]]用のものは[[応答]]に含まれては[['''ならず''']]、
[[応答]]用のものは[[要求]]に含まれては[['''なりません''']] [SRC[>>1]]。

[9] [[疑似ヘッダー]]は [[trailer]] に含まれては[['''なりません''']] [SRC[>>1]]。

* 処理

[10] 未定義や非妥当な[[疑似ヘッダー]]は、[[奇形]]として扱わなければ[['''なりません''']] [SRC[>>1]]。

[12] 通常の[[ヘッダー]]より後の[[疑似ヘッダー]]は、[[奇形]]として扱わなければ[['''なりません''']] [SRC[>>1]]。

;; [19] [[Firefox]] は仕様通りですが、[[Chrome]] は[[接続エラー]]
[CODE[[[COMPRESION_ERROR]]]] とします。 [TIME[2015-10-10T14:19:11.100Z]]

* 擬似ヘッダーの一覧

[14] [[要求]]には次の[[疑似ヘッダー]]があります。
[FIG(short list)[
- [CODE(HTTP)@en[[[:authority]]]]
- [CODE(HTTP)@en[[[:method]]]]
- [CODE(HTTP)@en[[[:path]]]]
- [CODE(HTTP)@en[[[:scheme]]]]
]FIG]

[15] [[応答]]には次の[[疑似ヘッダー]]があります。
[FIG(short list)[
- [CODE(HTTP)@en[[[:status]]]]
]FIG]

* 実装

[18] [[Chrome]] は未知の[[擬似ヘッダー]]を黙って無視します。
[[Firefox]] もそのようですが、仕様に合わせて修正されるようです [SRC[>>16, >>17]]。
[TIME[2015-10-10T13:53:23.800Z]]

[16] [CITE@en[1136727 – Firefox accepts undefined or invalid pseudo-header fields in HTTP/2]]
([TIME[2015-10-10 22:50:34 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=1136727>

[17] [CITE@en-US[Undefined pseudo-header fields are no longer accepted in HTTP/2 | Firefox Site Compatibility]]
([TIME[2015-10-10 09:20:57 +09:00]] 版)
<https://www.fxsitecompat.com/en-US/docs/2015/undefined-pseudo-header-fields-are-no-longer-accepted-in-http-2/>

[20] [CITE@en[wg-materials/minutes.md at gh-pages · httpwg/wg-materials]]
([TIME[2018-06-20 10:38:46 +09:00]])
<https://github.com/httpwg/wg-materials/blob/gh-pages/ietf101/minutes.md#bootstrapping-websockets>