-
Notifications
You must be signed in to change notification settings - Fork 4
/
756.txt
162 lines (118 loc) · 7.63 KB
/
756.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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
[18] [DFN[[CODE(HTTP)@en[[[DAV:]]]]]] [[ヘッダー]]は、対応する [[WebDAV]]
の機能を表すものです。
* 仕様書
[REFS[
- [3] '''[CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-10.1>'''
- [20] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-18>
]REFS]
* 意味
[7] [CODE(HTTP)@en[[[DAV:]]]] [[ヘッダー]]は、[[資源]]が対応している [[WebDAV]]
の[[スキーマ]]と[[プロトコル]]を示すものです [SRC[>>3]]。
* 構文
[1] [CODE(HTTP)@en[[[DAV:]]]] [[ヘッダー]]の値は、0個以上の適合クラスの[[リスト]]
([CODE(HTTP)[#]]) です [SRC[>>3]]。
[FIG(railroad)[
= ?
== 適合クラス
== *
=== [[OWS]]
=== [CODE(HTTP)[[[,]]]]
=== [[OWS]]
=== 適合クラス
]FIG]
[11] 適合クラスの値の順序は意味を持ちません [SRC[>>3]]。
* 文脈
[8] [[WebDAV]] に従う[[資源]]は、 [CODE(HTTP)@en[[[OPTIONS]]]] [[要求]]に対する[[応答]]で
[CODE(HTTP)@en[[[DAV:]] [[1]]]] を含めなければ[['''なりません''']] [SRC[>>3]]。
[9] [[WebDAV]] を一部の[[資源]]でしか対応していない[[鯖]]は、
>>8 を含める[['''べきではありません''']] [SRC[>>3]]。
[16] [[クライアント]]は、必要があれば[[要求]]に [CODE(HTTP)@en[[[DAV:]]]]
[[ヘッダー]]を含めることができます。しかし[[標準化過程]]の仕様書が要求しない限り、
含める[['''べきではありません''']]。 [SRC[>>3]]
;; [17] [[要求]]に含めさせる場合には、[[キャッシュ]]への影響を注意深く考慮しないといけません [SRC[>>3]]。
[19] この[[ヘッダー]]は複数指定できます。
* 適合クラス
[21] [RUBYB[[[WebDAV]] に従う[[資源]]]@en[DAV-compliant resource]]は、
[CODE(HTTP)@en[[[DAV:]]]] [[ヘッダー]]を使ってその[[適合クラス]]を[[広告]]できます [SRC[>>3, >>20]]。
[10] [CODE(HTTP)@en[[[DAV:]]]] [[ヘッダー]]に指定するそれぞれの値は、
当該[[資源]]が対応する[RUBYB[適合クラス]@en[compliance class]]を表します [SRC[>>3]]。
[22] [[クライアント]]は、[[資源]]に対して [CODE(HTTP)@en[[[OPTIONS]]]]
[[要求]]を送信し、[[応答]]の [CODE(HTTP)@en[[[DAV:]]]] [[ヘッダー]]を調べることで、
[[資源]]の[[適合クラス]]を知ることができます [SRC[>>20]]。
;; [23] [[資源]]によって異なるシステムの上に構築されているなど個々の事情により、
[[適合クラス]]は[[鯖]]ではなく[[資源]]についての情報となっています [SRC[>>20]]。
[24] [[WebDAV]] に従う[[資源]]は、 [[HTTP/1.1]] に適合しなければ[['''なりません''']]
[SRC[>>20]]。これは[[適合クラス]]ではなくすべてに対する要件となっています。
[5] 適合クラスは、 [CODE(HTTP)[[[1]]]]、[CODE(HTTP)[[[2]]]]、
[CODE(HTTP)[[[3]]]]、[[字句]]、[CODE[[[<]]]] と [CODE[[[>]]]]
で括った[[絶対URL]]のいずれかです [SRC[>>3]]。
[FIG(railroad)[
= |
== [[字句]]
== =
=== [CODE[[[<]]]]
=== [[ASCII絶対URL]]
=== [CODE[[[>]]]]
]FIG]
;; [6] [[絶対URL]]は [[RFC 3986]] [CODE(ABNF)@en[[[absolute-URI]]]]
の定義が参照されています [SRC[>>3]]。
[12] [[字句]]は、 [[RFC]] として標準化されます [SRC[>>3]]。
[13] それ以外のものは [[URL]] を使う[['''べきです''']] [SRC[>>3]]。
[14] 適合クラス2、3に従う[[資源]]は、適合クラス1にも従わなければなりません [SRC[>>3, >>20]]。
しかし一般にある適合クラスに従っていても、他の適合クラスに従っているとは限りません。
適合クラス2と適合クラス3は独立しています。 [SRC[>>3]]
[25] 適合クラス1の[[資源]]は、 [[RFC 4918]] の [['''MUST''']]
要件すべてに適合しなければ[['''なりません''']] [SRC[>>20]]。
[27] 適合クラス1の[[資源]]は、 [CODE(HTTP)@en[[[OPTIONS]]]] [[要求]]に対するすべての[[応答]]に
[CODE(HTTP)@en[[[DAV:]] 1]] を含めなければ[['''なりません''']] [SRC[>>20]]。
[26] 適合クラス2の[[資源]]は、適合クラス1に加え、
[CODE(HTTP)@en[[[LOCK]]]]、[CODE(URI)@en[[[DAV:supportedlock]]]]、
[CODE(URI)@en[[[DAV:lockdiscovery]]]]、[CODE(HTTP)@en[[[Time-Out:]]]] ([[応答]])、
[CODE(HTTP)@en[[[Lock-Token:]]]] に対応しなければ[['''なりません''']] [SRC[>>20]]。
更に [CODE(HTTP)@en[[[Timeout:]]]] [[ヘッダー]] ([[要求]])
と [CODE(XMLe)@en[[[owner]]]] [[要素]]にも対応する[['''べきです''']] [SRC[>>20]]。
;; [30] [CODE(HTTP)@en[[[Time-Out:]]]] [[ヘッダー]]は [[RFC 2518]] になる前の提案に含まれていた[[ヘッダー]]でした。
なぜここに残っているのか不明ですが、 [['''MUST''']] なので、
[[RFC 4918]] だけを見て適合クラス2を実装するのは難しそうです。
[28] 適合クラス2の[[資源]]は、 [CODE(HTTP)@en[[[OPTIONS]]]] [[要求]]に対するすべての[[応答]]に
[CODE(HTTP)@en[[[DAV:]] 2]] も含めなければ[['''なりません''']] [SRC[>>20]]。
[29] 適合クラス3は、 [[RFC 2518]] に対する [[RFC 4918]] の改訂に対応することを明示的に[[広告]]するものです [SRC[>>20]]。
適合クラス1も対応しなければ[['''なりません''']] [SRC[>>20]]。
;; [31] 適合クラス1が [[RFC 2518]] への適合を表しているわけでは無いようです。
適合クラス1も3も、 [[RFC 4918]] が「この文書」への適合を求めています。
* 処理
[15] 多くの [[WebDAV]] [[鯖]]は[[要求対象]]が [CODE(HTTP)[[[*]]]] の
[CODE(HTTP)@en[[[OPTIONS]]]] [[要求]]に対して [CODE(HTTP)@en[[[DAV:]]]]
[[ヘッダー]]を含めません [SRC[>>3]]。
* 歴史
[FIG(quote)[
[FIGCAPTION[
[4] RFC 2518 (WebDAV) 9.1 DAV Header
]FIGCAPTION]
>
- DAV = "DAV" ":" "1" ["," "2"] ["," 1#extend]
>This header indicates that the resource supports the DAV schema and
protocol as specified. All DAV compliant resources MUST return the
DAV header on all OPTIONS responses.
この頭は指定されている DAV schema
及びプロトコルに資源が対応していることを示します。
すべての DAV に従う資源は全ての
[CODE(HTTP)[[[OPTIONS]]]] 応答で
[CODE(HTTP)[DAV]] 頭を帰さなければ'''なりません'''。
>The value is a list of all compliance classes that the resource
supports. Note that above a comma has already been added to the 2.
This is because a resource can not be level 2 compliant unless it is
also level 1 compliant. Please refer to section 15 for more details.
In general, however, support for one compliance class does not entail
support for any other.
値はその資源が対応していて従っている級全ての並びです。
上で読点が [CODE(HTTP)[2]]
に付されていることに注意して下さい。
これは資源が水準1に従わずに水準②に従うことができないからです。
詳細は15章を参照してください。
しかし、通常はある従う級への対応が他のものへの対応を伴うことはありません。
]FIG]
[33] [[IANA登録簿]]は [[RFC 4918]] が出典に更新されています [SRC[>>32]]。
[REFS[
- [32] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-21.3.1>
]REFS]