/
79.txt
79 lines (55 loc) · 4.18 KB
/
79.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
[2] [CODE(HTTP)@en[[[Connection:]]]] [[ヘッダー]]の[[接続オプション]]
[DFN[[CODE(HTTP)@en[[[close]]]]]] は、[[送信者]]がその[[接続]]を[[要求]]・[[応答]]の完了後に閉じるつもりであることを表します
[SRC[>>1]]。
* 仕様書
[REFS[
- [1] '''[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-52>'''
- [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#section-6.6>
- [18] [CITE[Message Headers]] ([TIME[2014-06-13 18:50:11 +09:00]] 版) <http://www.iana.org/assignments/message-headers/message-headers.xhtml>
]REFS]
* ヘッダー
[3] [CODE(HTTP)@en[[[close]]]] は[[接続オプション]]ですが、対応する
[CODE(HTTP)@en[[[Close:]]]] [[ヘッダー]]はありません。
[CODE(HTTP)@en[[[Connection:]]]] [[ヘッダー]]の値としてのみ使います。
;; [19] [CODE(HTTP)@en[[[Close:]]]] [[ヘッダー]]は予約されています [SRC[>>18]]。
* 文脈
[7] [[送信者]]は、現在の[[要求]]と[[応答]]の後に[[接続]]を閉じたいときは、
[CODE(HTTP)@en[[[close]]]] [[接続オプション]]を送信する[['''べきです''']] [SRC[>>6]]。
[4] [[持続接続]]に対応していない[[クライアント]]は、
[[要求メッセージ]]に [CODE(HTTP)@en[[[close]]]] [[接続オプション]]を含めなければ[['''なりません''']]
[SRC[>>1]]。
[5] [[持続接続]]に対応していない[[鯖]]は、 [CODE(HTTP)[[[1xx]]]]
以外の[[応答メッセージ]]に [CODE(HTTP)@en[[[close]]]]
[[接続オプション]]を含めなければ[['''なりません''']]
[SRC[>>1]]。
* 処理モデル
[9] [[クライアント]]は、 [CODE(HTTP)@en[[[close]]]] を送信した場合、
対応する最後の[[応答]]を読んだ後[[接続]]を閉じなければ[['''なりません''']] [SRC[>>6]]。
[13] [[鯖]]は、 [CODE(HTTP)@en[[[close]]]] を送信した場合、
その[[応答]]を送信した後[[接続]]を閉じはじめなければ[['''なりません''']] [SRC[>>6]]。
[8] [[クライアント]]は、 [CODE(HTTP)@en[[[close]]]] を送信した場合、
その[[接続]]にそれ以上[[要求]]を送信しては[['''なりません''']] [SRC[>>6]]。
[14] [[鯖]]は、 [CODE(HTTP)@en[[[close]]]] を送信した場合、
その[[接続]]の以降の[[要求]]を処理しては[['''なりません''']] [SRC[>>6]]。
[15] [[クライアント]]は、 [CODE(HTTP)@en[[[close]]]] を受信した場合、
[[接続]]を閉じ、その[[接続]]での[[要求]]の送信を停止しなければ[['''なりません''']]
[SRC[>>6]]。
[10] [[鯖]]は、 [CODE(HTTP)@en[[[close]]]] を受信した場合、
その[[要求]]に対する最後の[[応答]]を送信した後[[接続]]を閉じはじめなければ[['''なりません''']]。
[SRC[>>6]]
[11] [[鯖]]は、 [CODE(HTTP)@en[[[close]]]] を受信した場合、
その[[要求]]に対する最後の[[応答]]に [CODE(HTTP)@en[[[close]]]]
[[接続オプション]]を含める[['''べきです''']] [SRC[>>6]]。
[12] [[鯖]]は、 [CODE(HTTP)@en[[[close]]]] を受信した場合、
その[[接続]]の以降の[[要求]]を処理しては[['''なりません''']] [SRC[>>6]]。
[16] [[クライアント]]は、[[パイプライン]]化して[[要求]]を送信していた途中で
[CODE(HTTP)@en[[[close]]]] を受信した場合、それ以降の[[要求]]が処理されたと仮定する[['''べきではありません''']]
[SRC[>>6]]。
* 実装
[20] [[Apache]] も [[nginx]] も、最後の[[応答]]には ([[要求]]が [[HTTP/1.0]]
であろうと [[HTTP/1.1]] であろうと) [CODE(HTTP)@en[[[Connection:]] [[close]]]]
を含めるようです。 [TIME[2014-11-07T10:05:28.100Z]]
;; [21] [[Apache]] も [[nginx]] も、([[プロトコルの版]]の規定に従い)
[[HTTP/1.0]] [[要求]]に対しても [[HTTP/1.1]] [[応答]]を返します。
* 関連
[17] [[HTTP接続]]、[[持続的接続]]、[[HTTPパイプライン]]も参照してください。