/
58.txt
66 lines (48 loc) · 3.07 KB
/
58.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[1] [DFN[[RUBYB[[[欄値]]]@en[field body]]]]は、[[ヘッダー]]の値です。
* 仕様書
[REFS[
- [2] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#page-23>
- [6] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#page-26>
- [101] [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-10.3>
]REFS]
* 構文
[3] [[欄値]]は、零文字以上の [[VCHAR]] や [[SP]] や [[HTAB]] の列とされています [SRC[>>2]]。
[4] [[SP]] や [[HTAB]] は最初や最後にはできません [SRC[>>2]]。
ただし実際には[[ヘッダー]]内で[[欄値]]の前後に
[[OWS]] が認められていますから、見かけ上はこの制約は無いともいえます。
;; [11] [[RFC 7233]] の [CODE(HTTP)@en[[[Content-Range:]]]] [[ヘッダー]]の定義はこの制約に反しています。
[[RFC 7235]] の [[challenge]] や [[credentials]] もこの制約に反した値を受理してしまいます。
[FIG(railroad)[
= ?
== [[VCHAR]]
== ?
=== *
==== |
===== [[VCHAR]]
===== [[SP]]
===== [[HTAB]]
=== [[VCHAR]]
]FIG]
[5] [[廃止]]された ([[生成]]してはいけない) 構文として、
>>3 に加えて [[obs-text]] が含まれることがあります。また、
[[行折り畳み]]が行われることがあります。 [SRC[>>2]]
[7] 歴史的には[[文字コード]]は [[ISO-8859-1]] とされていましたが、 [[RFC 7230]]
は実際にはほとんど [[US-ASCII]] しか使われていないと述べています [SRC[>>6]]。
[8] 新しい[[ヘッダー]]は、[[欄値]]を [[US-ASCII]] に限定する[['''べきです''']] [SRC[>>6]]。
[9] [[受信者]]は、[[欄値]]の[[非ASCII文字]] ([[obs-text]]) を不透明なデータとして扱う[['''べきです''']]
[SRC[>>6]]。
;; [10] 歴史的には、非標準のヘッダーを中心に、[[非ASCII文字]]がしばしば用いられていました。
近年では [[UTF-8]] がよく用いられています。
* 処理
[102] 構文上認められない[[ヘッダー値]]を含む [[HTTP/2]] [[メッセージ]]は、
[[奇形]]です [SRC[>>101]]。
[13] 具体的には [CODE[0x00]]-[CODE[0x08]], [CODE[0x0D]], [CODE[0x0C]],
[CODE[0x0E]]-[CODE[0x1F]], [CODE[0x7F]] が含まれる場合や、
先頭や末尾に [CODE[0x20]], [CODE[0x09]], [CODE[0x0A]], [CODE[0x0D]] がある場合、
[CODE[0x0D]] [CODE[0x0A]] の後に [CODE[0x09]] または [CODE[0x0A]]
という形以外で [CODE[0x0D]], [CODE[0x0A]] が含まれる場合が該当するとみられます。
[CODE[0x80]]-[CODE[0xFF]] は該当しません。
* 比較
[12] [CODE(HTTP)@en[[[Vary:]]]] [[ヘッダー]]で指定された[[ヘッダー]]の値の比較方法が
[[HTTP]] で規定されています。
;; [CODE(HTTP)@en[[[Vary:]]]] の項を参照。