[7] [[HTTPメッセージ]]は、 [[HTTP/2]] のプロトコルのレベルで不整合があれば、
[DFN[[RUBYB[奇形]@en[malformed]]]]といいます。

* 仕様書

[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.6>
]REFS]

* 意味

[2] [[HTTP/2]] [[フレーム]]の列で、余分な[[フレーム]]があったり、
禁止されている[[ヘッダー]]があったり、
必須の[[ヘッダー]]がなかったり、
[[大文字]]の[[ヘッダー名]]が使われたりすることが原因で[[非妥当]]となっているものを、
[DFN[[RUBYB[奇形]@en[malformed]]]]の[[要求]]や[[応答]]といいます [SRC[>>1]]。

* 処理

[3] [[HTTP]] の[[要求]]や[[応答]]を処理する[[中間器]] ([[トンネル]]以外の[[中間器]])
は、[[奇形]]の[[要求]]や[[応答]]を[[転送]]しては[['''なりません''']] [SRC[>>1]]。

[4] [[奇形]]の[[要求]]を検出したら、[[ストリームエラー]] [CODE[[[PROTOCOL_ERROR]]]]
としなければ[['''なりません''']] [SRC[>>1]]。
[[サーバー]]はその前に [[HTTP応答]]を送信しても構いません [SRC[>>1]]。

[5] [[奇形]]の[[応答]]を検出したら、[[ストリームエラー]] [CODE[[[PROTOCOL_ERROR]]]]
としなければ[['''なりません''']] [SRC[>>1]]。
[[クライアント]]は[[奇形]]の[[応答]]を受け付けては[['''なりません''']] [SRC[>>1]]。

;; [6] こうした制約は、攻撃を防ぐため、意図的に厳密にしてあります [SRC[>>1]]。
