-
Notifications
You must be signed in to change notification settings - Fork 4
/
410.txt
162 lines (122 loc) · 10.2 KB
/
410.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
* 仕様書
[REFS[
- [4] [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-5.2>
- [6] '''[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-9.1>'''
- [28] [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-14.2>
- [30] [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-14.8>
- [35] [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-14.20>
- [39] [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-14.21>
- [40] [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#page-101>
- [42] [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-17>
- [3] [CITE@en[RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)]] ([TIME[2014-10-06 15:21:16 +09:00]] 版) <http://tools.ietf.org/html/rfc2324#section-2.1.3>
]REFS]
* 意味
[7] [CODE(HTTP)@en[[[PROPFIND]]]] [[メソッド]]は、
[[要求URL]]によって表される[[資源]]が[[内部メンバー]]を持たない場合にはその[[資源]]の[[特性]]を、
[[内部メンバー]]を持つ場合にはその[[資源]]や[[内部メンバー]]の[[特性]]を取得するものです [SRC[>>6]]。
[25] [CODE(HTTP)@en[[[PROPFIND]]]] は[[安全なメソッド]]で[[冪等メソッド]]です [SRC[>>6]]。
* 構文
[9] [[クライアント]]は、[CODE(HTTP)@en[[[PROPFIND]]]] [[要求]]に値
[CODE(HTTP)[[[0]]]]、[CODE(HTTP)[[[1]]]]、[CODE(HTTP)@en[[[infinity]]]]
のいずれかの [CODE(HTTP)@en[[[Depth:]]]] [[ヘッダー]]を指定しなければ[['''なりません''']]
[SRC[>>6]]。
[11] [[クライアント]]は、[[要求]]の [[payload body]] で [CODE(XMLe)@en[[[propfind]]]]
[[要素]]を指定できます [SRC[>>6]]。
[16] [[クライアント]]は、[[要求]]の [[payload body]] を空にもできます。
その場合、 [CODE(XMLe)@en[[[allprop]]]] [[要素]]が指定されたものとみなされます。 [SRC[>>6]]
[36] [CODE(URI)@en[[[DAV:]]]] [[名前空間]]の [DFN[[CODE(XMLe)@en[[[propfind]]]]]]
[[要素]]は、返すべき[[特性]]を指定するものです [SRC[>>35]]。
[37] [[内容]]は[[要素内容]]で、 [CODE(XMLe)@en[[[propname]]]] [[要素]]、
[CODE(XMLe)@en[[[allprop]]]] [[要素]]、 [CODE(XMLe)@en[[[prop]]]]
[[要素]]のいずれかを含められます。 [CODE(XMLe)@en[[[allprop]]]]
[[要素]]を含める時は、 [CODE(XMLe)@en[[[include]]]] [[要素]]も含められます。
[SRC[>>35]] 順序は意味を持ちません [SRC[>>42]]。
[FIG(railroad)[
= |
== [CODE(XMLe)@en[[[propname]]]]
== =
=== [CODE(XMLe)@en[[[allprop]]]]
=== ?
==== [CODE(XMLe)@en[[[include]]]]
== =
=== ?
==== [CODE(XMLe)@en[[[include]]]]
=== [CODE(XMLe)@en[[[allprop]]]]
== [CODE(XMLe)@en[[[prop]]]]
]FIG]
[13] [CODE(XMLe)@en[[[prop]]]] [[要素]]によって[[特性]]の名前を列挙することで、
指定した[[特性]]の値を要求できます [SRC[>>6]]。
[38] この [CODE(XMLe)@en[[[prop]]]] [[要素]]は[[特性]]の値を含んでは[['''なりません''']]
[SRC[>>35]]。
[14] [CODE(URI)[[[DAV:]]]] [[名前空間]]の [DFN[[CODE(XMLe)@en[[[allprop]]]]]] [[要素]]は、
当該[[資源]]に存在するすべての[[死特性]]と [[RFC 4918]] で定義されるすべての[[生特性]]の名前と値を返すよう指定するものです [SRC[>>6, >>28]]。
この[[要素]]は、[[空要素]]です [SRC[>>28]]。
[29] [CODE(URI)@en[[[DAV:]]]] [[名前空間]]の [DFN[[CODE(XMLe)@en[[[include]]]]]]
[[要素]]は、更に[[生特性]]を加えて要求するものです [SRC[>>6]]。
[32] [CODE(XMLe)@en[[[include]]]] [[要素]]の[[子要素]]は、
[[応答]]に含めるべき[[特性]]の名前を表すもの
([[特性名要素]]) でなければ[['''なりません''']] [SRC[>>30]]。
順序は意味を持ちません [SRC[>>42]]。
;; [34] [[死特性]]を指定することは禁止されていないようですが、
[CODE(XMLe)@en[[[allprop]]]] [[要素]]で[[死特性]]がすべて含まれるので、
冗長です。
[31] [[内容]]に[[テキスト]]を含めては[['''なりません''']] [SRC[>>30]]。
;; [33] [[要素間空白]]が認められるかは不明です。
[15] [CODE(URI)@en[[[DAV:]]]] [[名前空間]]の [DFN[[CODE(XMLe)@en[[[propname]]]]]]
[[要素]]は、当該[[資源]]で定義されている[[特性]]の名前の一覧のみを要求するものです
[SRC[>>6, >>39]]。[[特性]]の値は要求しません。この[[要素]]は[[空要素]]です [SRC[>>39]]。
* 文脈
[1] [[HTCPCP]] では、対象が[[珈琲]]一杯なら、
その沸かした珈琲に関する[[メタ・データ]]が
[CODE(HTTP)[PROPFIND]] [[method]] を使って得られます [SRC[>>3]]。
* 処理
[8] [[WebDAV]] に従う[[資源]]は、 [CODE(HTTP)@en[[[PROPFIND]]]] [[メソッド]]、
[CODE(XMLe)@en[[[propfind]]]] [[要素]]およびその中で使われる各[[要素]]に対応しなければ[['''なりません''']] [SRC[>>6]]。
[10] [[WebDAV]] に従う[[資源]]は、 [CODE(HTTP)@en[[[Depth:]]]] [[ヘッダー]]の値として
[CODE(HTTP)[[[1]]]] と [CODE(HTTP)[[[0]]]] に対応しなければ[['''ならず''']]、
[CODE(HTTP)@en[[[infinity]]]] にも対応する[['''べきです''']]。
[CODE(HTTP)@en[[[Depth:]]]] [[ヘッダー]]が無い場合は [CODE(HTTP)@en[[[infinity]]]]
とみなす[['''べきです''']]。 [SRC[>>6]]
[26] しかし実際上は性能や保安上の理由で [CODE(HTTP)@en[[[infinity]]]]
への対応を無効としても構いません [SRC[>>6]]。その場合 [CODE(HTTP)[[[403]]]]
[[応答]]で[[事前条件符号]] [DFN[[CODE@en[[[propfind-finite-depth]]]]]]
を指定する[['''べきです''']] [SRC[>>6, >>40]]。
[41] [CODE(XMLe)@en[[[propfind-finite-depth]]]] [[要素]]の[[内容]]は[[空]]です [SRC[>>40]]。
[5] 複数の[[パスセグメント]]から単一の[[資源]]への[[写像]]が存在する場合、
そのうちの1つの[[パスセグメント]]だけを一貫して選んで返さなければ[['''なりません''']]
[SRC[>>4]]。
[12] [[鯖]]は、 [CODE(XMLe)@en[[[prop]]]] [[要素]]で[[特性]]が指定された順序を無視して構いません [SRC[>>6]]。
[17] [[鯖]]は、空の [[payload body]] が指定された場合は [CODE(XMLe)@en[[[allprop]]]]
[[要素]]が指定されたとみなさなければ[['''なりません''']] [SRC[>>6]]。
;; [18] [CODE(XMLe)@en[[[allprop]]]] はその名前に反してすべての[[特性]]を返させるものではありません。
これは、[[特性]]の中には値の計算が大変なものもあるからです [SRC[>>6]]。
[19] [[鯖]]は、指定された[[特性]]を取得しようとした結果の
[CODE(XMLe)@en[[[multistatus]]]] [[要素]]を含む
[CODE(MIME)@en[[[text/xml]]]] または [CODE(MIME)@en[[[application/xml]]]]
の[[応答]]を返せなければ[['''なりません''']] [SRC[>>6]]。
[21] [[コレクション]]に対する[[要求]]の場合、[CODE(XMLe)@en[[[multistatus]]]] [[要素]]は、
[[コレクション]]のうち [CODE(HTTP)@en[[[Depth:]]]] で指定された範囲の[[メンバーURL]]
それぞれについての [CODE(XMLe)@en[[[response]]]] [[要素]]を含まなければ[['''なりません''']]
[SRC[>>6]]。 [[WebDAV]] に適合しない[[資源]]についての [CODE(XMLe)@en[[[response]]]]
[[要素]]を含む[['''べきではありません''']] [SRC[>>6]]。
順序は意味を持ちません [SRC[>>6]]。
[22] [CODE(XMLe)@en[[[response]]]] [[要素]]は、[[資源]]の [[URL]]
を含む [CODE(XMLe)@en[[[href]]]] [[要素]]を含めなければ[['''なりません''']] [SRC[>>6]]。
[23] [[特性]]は[[アクセス制御]]の対象となっているかもしれませんが、
[CODE(XMLe)@en[[[allprop]]]] と [CODE(XMLe)@en[[[propname]]]] の[[要求]]の場合には、
[[特性]]の存在を知る権限がない[[特性]]については黙って除外して構いません [SRC[>>6]]。
[20] [[特性]]の取得時にエラーが発生した場合は、その旨を[[応答]]に含めなければ[['''なりません''']]。
[[特性]]が存在しなかった場合は、 [CODE(HTTP)[[[404]]]] の [CODE(XMLe)@en[[[response]]]]
[[要素]]として含めなければ[['''なりません''']]。 [SRC[>>6]]
[27] 各[[特性]]は [CODE(XMLe)@en[[[propstat]]]] [[要素]]に含めますが、
[CODE(XMLe)@en[[[propstat]]]] [[要素]]は各[[特性]]についての [CODE(XMLe)@en[[[status]]]]
[[要素]]を含みます。[[クライアント]]はその値として任意の [CODE(HTTP)[[[2xx]]]]、
[CODE(HTTP)[[[3xx]]]]、[CODE(HTTP)[[[4xx]]]]、[CODE(HTTP)[[[5xx]]]] の[[状態符号]]を扱えるように準備するべきですが、
[CODE(HTTP)[[[200]]]]、[CODE(HTTP)[[[401]]]]、[CODE(HTTP)[[[403]]]]、[CODE(HTTP)[[[404]]]]
がよく使われます。 [SRC[>>6]]
[24] [CODE(XMLe)@en[[[PROPFIND]]]] [[メソッド]]の結果は[[キャッシュ可能]]なこともありますが、
ほとんどの[[特性]]は[[検証]]の仕組みがありませんから、注意する必要があります [SRC[>>6]]。
* メモ
[2] [CITE[''''''[''''''MS-XWDSEARCH'''''']'''''': Web Distributed Authoring and Versioning (WebDAV) Extensions for Search]]
( ([TIME[2014-09-17 03:17:18 +09:00]] 版))
<http://webcache.googleusercontent.com/search?q=cache:JudZmDtQJ7gJ:download.microsoft.com/download/5/0/1/501ED102-E53F-4CE0-AA6B-B0F93629DDC6/Exchange/%5BMS-XWDSEARCH%5D.pdf#19>