-
Notifications
You must be signed in to change notification settings - Fork 4
/
247.txt
95 lines (70 loc) · 5.61 KB
/
247.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
[3] [[HTTP]] や派生プロトコルでは、百番台の[[状態符号]]は要求された処理の途中経過的なものを示す暫定応答を表します。正式な応答はしばらくした後に続けて送られてくるはずです。
[FIG(list short)[
- [CODE(HTTP)[[[100]]]]
- [CODE(HTTP)[[[101]]]]
]FIG]
* 仕様書
[REFS[
- [104] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-6.2>'''
- [101] [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#section-3.3>
]REFS]
* 意味
[105] [CODE(HTTP)[[[1xx]]]] は、要求された動作を完了して[[最後の応答]]を送信する前に接続状態や要求の進捗を知らせるための暫定的な[[応答]]を表しています
[SRC[>>104]]。
* 文脈
[106] [[HTTP/1.0]] [[クライアント]]に対して [CODE(HTTP)[[[1xx]]]]
[[応答]]を送っては[['''なりません''']] [SRC[>>104]]。
* 構文
[102] [CODE(HTTP)[[[1xx]]]] [[応答]]は、[[メッセージ本体]]を持ちません
[SRC[>>101]]。[[状態行]]と[[ヘッダー]]群の後の最初の[[空行]]をもって[[応答]]は終わりとなります
[SRC[>>104]]。
* 処理モデル
[107] [[クライアント]]は、 [CODE(HTTP)[[[1xx]]]] [[応答]]を期待していない場合であっても、
[[最後の応答]]の前に [CODE(HTTP)[[[1xx]]]] [[応答]]が1つ以上現れるのを[[構文解析]]できなければ[['''なりません''']]。
期待していない [CODE(HTTP)[[[1xx]]]] [[応答]]は無視して[['''構いません''']]。 [SRC[>>104]]
[108] [[串]]は、自身が [CODE(HTTP)[[[1xx]]]] [[応答]]の生成を要求した場合を除き、
[CODE(HTTP)[[[1xx]]]] [[応答]]を[[転送]]しなければ[['''なりません''']] [SRC[>>104]]。
[EG[
[109] 例えば[[串]]は[[要求]]を[[転送]]するに当たり
[CODE(HTTP)@en[[[Expect:]] [[100-continue]]]] を追加した場合には、
[CODE(HTTP)[[[100]]]] [[応答]]を[[転送]]する必要はありません [SRC[>>104]]。
]EG]
* 歴史
[FIG(quote)[
[FIGCAPTION[
[103] RFC 1945 (HTTP/1.0) 9.1; RFC 2068・2616 (HTTP/1.1) 10.1 Informational 1xx
]FIGCAPTION]
> This class of status code indicates a provisional response,
consisting only of the Status-Line and optional headers, and is
terminated by an empty line. [INS[[INS[{2616}]] There are no required headers for this class of status code.]] [DEL[[INS[{1945}]] HTTP/1.0 does not define any 1xx codes and they are not a valid response to a HTTP/1.0 request. However, they may be useful for experimental applications which are outside the scope of this specification.]] [INS[[INS[{2068, 2616}]] Since HTTP/1.0 did not define any 1xx status status codes, servers MUST NOT send a 1xx response to an HTTP/1.0 client except under experimental conditions.]]
この[[状態符号]]の級は、暫定応答を示し、 [CODE(ABNF)[[[Status-Line]]]]
と省略可能な頭並びのみを含み、空行で愁嘆します。 [INS[この状態符号の級では必須の頭はありません。]] [DEL[HTTP/1.0 は [CODE(HTTP)[1[VAR[xx]]]] 符号を定義しておらず、 HTTP/1.0 要求に対する妥当な応答ではありません。しかし、この仕様書の適用範囲外の実験的応用には有用かもしれません。]] [INS[HTTP/1.0 は [CODE(HTTP)[1[VAR[xx]]]] 状態符号を定義していませんでしたから、サーバーは HTTP/1.0 クライアントには実験的条件下を除いて [CODE(HTTP)[1[VAR[x]]]] 応答を送っては'''なりません'''。]]
[INS[
> [INS[{2616}]] A client MUST be prepared to accept one or more 1xx status responses
prior to a regular response, even if the client does not expect a 100
(Continue) status message. Unexpected 1xx status responses MAY be
ignored by a user agent.
クライアントは、たとえそのクライアントが [CODE(HTTP)[[[100]]]] (継続)
状態メッセージを期待していないとしても、正規の応答の前の1つ以上の [CODE(HTTP)[1[VAR[xx]]]] 状態応答を受け入れる準備ができていなければ'''なりません'''。
予期せぬ [CODE(HTTP)[1[VAR[xx]]]] を利用者エージェントは無視しても'''構いません'''。
> Proxies MUST forward 1xx responses, unless the connection between the
proxy and its client has been closed, or unless the proxy itself
requested the generation of the 1xx response. (For example, if a
proxy adds a "Expect: 100-continue" field when it forwards a request,
then it need not forward the corresponding 100 (Continue)
response(s).)
串は、串とそのクライアントの間の接続が閉じているか、
又は串自身が [CODE(HTTP)[1[VAR[xx]]]] 応答の生成を要求したのでない限り、
[CODE(HTTP)[1[VAR[xx]]]] 応用を転送しなければ'''なりません'''。
(例えば、串が要求を転送するときに [CODE(HTTP)[[[Expect]]: [[100-continue]]]]
欄を加えたのなら、対応する [CODE(HTTP)[100]] (継続)
応答(群)を転送する必要はありません。)
]INS]
]FIG]
* メモ
[1] 巷の [[HTTP/1.1]] 適合を主張する[[利用者エージェント]]って、
ほんとに [CODE(HTTP)[1[VAR[xx]]]] に対応しているのですかね?
[2] 本体を使えれば、「しばらくお待ち下さい」的メッセージに使えると思うんですが・・・。
[CODE(MIME)[[[multipart/x-mixed-replace]]]]
の代替にも使えるかも。
その辺がちょいとばかり残念かも。