/
348.txt
59 lines (38 loc) · 2.94 KB
/
348.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
[19] [DFN[[CODE(HTTP)@en[[[HTTP2-Settings:]]]]]] [[ヘッダー]]は、
[CODE(HTTP)@en[[[Upgrade: h2c]]]] を指定した [[HTTP/1.1]] over [[TCP]] から
[[HTTP/2]] over [[TCP]] への移行を求める[[要求]]において、
[[HTTP/2]] [CODE(HTTP)@en[[[SETTINGS]]]] [[フレーム]]を指定するものです。
* 仕様書
[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-3.2.1>'''
- [16] [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.2>
- [13] [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-11.5>
]REFS]
* 意味
[3] [[HTTP/2接続]]に関する[[引数]]を含むものです [SRC[>>1]]。
[4] [[connection-specific header field]] です [SRC[>>1]]。
* 構文
[5] [[字句68]]です [SRC[>>1]]。
[9] 値は、 [CODE(HTTP)@en[[[SETTINGS]]]] [[フレーム]]の [[payload]]
を [[base64url]] [[符号化]]したものです [SRC[>>1]]。
* 文脈
[2] [[HTTP/1.1]] から [[HTTP/2]] への切り替えの[[要求]]は、
[CODE(HTTP)@en[[[HTTP2-Settings:]]]] [[ヘッダー]]をちょうど1つだけ含まなければ[['''なりません''']] [SRC[>>1]]。
[10] [CODE(HTTP)@en[[[Connection:]]]] にも [CODE(HTTP)@en[[[HTTP2-Settings]]]]
を指定しなければ[['''なりません''']] [SRC[>>1]]。
[6] [[サーバー]]は、送信しては[['''なりません''']] [SRC[>>1]]。
;; [12] [[クライアント]]が [CODE(HTTP)@en[[[Upgrade:]] [[h2c]]]] 以外の文脈で使ってはならないという規定は、なぜかありません。
[14] [[HTTP/1.0]] で利用することは明確には禁止されていませんが、
[[HTTP/1.0]] では [CODE(HTTP)@en[[[Upgrade:]]]] は利用できないため、意味がありません。
[17] [[HTTP/2]] では[[生成]]しては[['''なりません''']] [SRC[>>1, >>16]]。
;; [15] [[HTTP/2]] [[メッセージ]]に [CODE(HTTP)@en[[[HTTP2-Settings:]]]]
[[ヘッダー]]を指定しても意味はありません。 [CODE(HTTP)@en[[[SETTINGS]]]]
[[フレーム]]を使う必要があります。
* 処理
[8] [[サーバー]]は、 [CODE(HTTP)@en[[[HTTP2-Settings:]]]] [[ヘッダー]]が複数あるか、
1つもなければ、[[HTTP/2]] に切り替えては[['''なりません''']] [SRC[>>1]]。
[11] [[サーバー]]は、値を通常の [CODE[[[SETTINGS]]]] [[フレーム]]と同じように解釈します
[SRC[>>1]]。
[18] [[base64url]] [[復号]]や[[フレーム]]解釈によりエラーが検出された場合にどうするべきなのかは不明です。
切り替えずに [[HTTP/1.1]] で処理を続けるべきなのでしょうか。
[7] 詳しくは [CODE(HTTP)@en[[[Upgrade: h2c]]]] を参照。