-
Notifications
You must be signed in to change notification settings - Fork 4
/
56.txt
321 lines (253 loc) · 12.9 KB
/
56.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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
[506] [[HTTP]] および派生プロトコルにおける[[メソッド]]は、当該[[要求]]によって[[鯖]]に対して求めている操作の種類を表します。
[[メソッド]]は短い英数字列 (通常は[[大文字]]) によって表されます。
* 仕様書
[REFS[
- [513] [CITE@en-US[XMLHttpRequest]] ([TIME[2012-02-18 19:54:32 +09:00]] 版) <http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-open>
]REFS]
* 大文字・小文字の区別
[3] [[HTTP]] でも [[RTSP]] でも [[SIP]] でも、
大文字・小文字を区別します。
とはいえ実装は区別しないものも多いみたいです。
[514] [[XHR]] は9種類のメソッドについて[[ASCII大文字・小文字不区別]]、それ以外について区別するとしています
[SRC[>>513]]。
[REFS[
- [5] [CITE[HTTP methods, Web browsers and XMLHttpRequest - Anne’s Weblog]] ([TIME[2007-10-10 00:14:30 +09:00]] 版) <http://annevankesteren.nl/2007/10/http-method-support>
]REFS]
[510] >>5 は各[[Webブラウザー]]の [[XHR]] における[[メソッド]]の[[大文字]]と[[小文字]]についての調査結果です。
* メソッドの特性
- [503] [[安全]]
- [504] [[冪等]]
- [505] [[キャッシュ可能性]]
- [515] 大文字・小文字の区別
- [516] [[XHR]] での安全性
* IANA 登録簿
[507] HTTP[DEL[/RTSP]] では Method 名の [[IANA]] 登録簿はありません。
[508] SIP の登録簿は
<http://www.iana.org/assignments/sip-parameters>
にあります。
[4] [[RTSP]] の [[IANA登録簿]]は
[REFS[
- [509] [CITE[Real Time Streaming Protocol (RTSP)/1.0 Parameters]] <http://www.iana.org/assignments/rtsp-parameters>
]REFS]
... にあります。
* メソッドの一覧
[FIG[
[FIGCAPTION[
[1] [[HTTP]] および派生プロトコルの[[メソッド]]の一覧
]FIGCAPTION]
,[CODE(ABNF)[request-method]] ,プロトコル
,[[ACK]] ,"SIP ([RFC 2543], [IANAREG])"
,[CODE(HTTP)@en[[[ACL]]]],[[HTTP]]
,[[ANNOUNCE]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[BASELINE-CONTROL]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BCOPY]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BDELETE]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BIND]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BMOVE]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BPROPFIND]]]],[[HTTP]]
,[CODE(HTTP)@en[[[BPROPPATCH]]]],[[HTTP]]
,[[BREW]] ,HTCPCP ([RFC 2324])
,[[BROWSE]] ,HTTP ([Gripes])
,[[BYE]] ,"SIP ([RFC 2543], [IANAREG])"
,[[CANCEL]] ,"SIP ([RFC 2543], [IANAREG])"
,[CODE(HTTP)@en[[[CHECKIN]]]],[[HTTP]]
,[CODE(HTTP)@en[[[CHECKOUT]]]],[[HTTP]]
,[[CONNECT]] ,HTTP ([RFC 2616] 予約)
,[CODE[[[COPY]]]] ,HTTP ([RFC 2518])
,[CODE[[[DELETE]]]] ,"HTTP ([RFC 2068], [RFC 2616]; [RFC 2518])"
,[[DESCRIBE]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[X-MS-ENUMATTS]]]],[[HTTP]]
,[CODE[[[GET]]]] ,"HTTP ([HTTP/0.9], [RFC 1945], [RFC 2068], [RFC 2616]; [RFC 2518]), HTCPCP ([RFC 2324])"
,[[GET_PARAMETER]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[GET-WITH-BODY]]]],"[[HTTP]]"
,[CODE[[[HEAD]]]] ,"HTTP ([RFC 2068], [RFC 2616]; [RFC 2518])"
,[[INFO]] ,"SIP ([RFC 2976], [IANAREG])"
,[[INVITE]] ,"SIP ([RFC 2543], [IANAREG])"
,[CODE(HTTP)@en[[[LABEL]]]],[[HTTP]]
,[[LINK]] ,HTTP ([RFC 2068] 参考)
,[CODE[[[LOCK]]]] ,HTTP (RFC 2518)
,[[M-*]] ,HTTP ([RFC 2774])
,[CODE(HTTP)[[[MDELETE]]]] ,HTTP ([[URIQA]])
,[CODE(HTTP)@en[[[MERGE]]]],[[HTTP]]
,[[M-GET]] ,HTTP ([RFC 2774])
,[CODE(HTTP)[[[MGET]]]] ,HTTP ([[URIQA]])
,[CODE[[[M-POST]]]],HTTP
,[[M-PUT]] ,HTTP ([RFC 2774])
,[CODE(HTTP)[[[MPUT]]]] ,HTTP ([[URIQA]])
,[[MESSAGE]] ,"SIP ([RFC 3428], [IANAREG])"
,[CODE(HTTP)@en[[[MKACTIVITY]]]],[[HTTP]]
,[CODE(HTTP)@en[[[MKCALENDAR]]]] ,[[HTTP]] ([[RFC 4791]])
,[CODE[[[MKCOL]]]] ,HTTP ([RFC 2518])
,[CODE(HTTP)@en[[[MKREDIRECTREF]]]],[[HTTP]]
,[CODE(HTTP)@en[[[MKWORKSPACE]]]],[[HTTP]]
,[CODE[[[MOVE]]]] ,HTTP ([RFC 2518])
,[CODE(HTTP)@en[[[NOTIFY]]]],"[[HTTP]], [[SIP]]"
,[[OPTIONS]] ,"HTTP ([RFC 2068], [RFC 2616]), RTSP ([RFC 2326]), SIP ([RFC 2543], [IANAREG])"
,[CODE(HTTP)@en[[[ORDERPATCH]]]],[[HTTP]]
,[[PATCH]] ,HTTP ([RFC 2068] 参考)
,[[PAUSE]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[PEP]]]],[[HTTP]]
,[CODE(HTTP)@en[[[PEP-[VAR[*]]]]]],[[HTTP]]
,[CODE(HTTP)@en[[[PEP-PUT]]]],[[HTTP]]
,[[PLAY]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[POLL]]]],[[HTTP]]
,[[POST]] ,"HTTP ([RFC 2068], [RFC 2616]), HTCPCP ([RFC 2324]))"
,[[PRACK]] ,"SIP ([RFC 3262], [IANAREG])"
,[CODE[[[PROPFIND]]]] ,"HTCPCP ([RFC 2324]), HTTP ([RFC 2518])"
,[CODE[[[PROPPATCH]]]] ,HTTP ([RFC 2518])
,[CODE[[[PUT]]]] ,"HTTP ([RFC 2068], [RFC 2616]; [RFC 2518])"
,[[RECORD]] ,RTSP ([RFC 2326])
,[[REDIRECT]] ,RTSP ([RFC 2326])
,[[REFER]] ,"SIP ([RFC 3315], [IANAREG])"
,[CODE(HTTP)@en[[[REBIND]]]],[[HTTP]]
,[[REGISTER]] ,"SIP ([RFC 2543], [IANAREG])"
,[CODE(HTTP)@en[[[REPORT]]]] ,[[HTTP]] ([[RFC 4791]])
,[CODE(HTTP)@en[[[RPC_IN_DATA]]]],[[HTTP]]
,[CODE(HTTP)@en[[[RPC_OUT_DATA]]]],[[HTTP]]
,[CODE[[[SEARCH]]]] ,HTTP (ワーム)
,[CODE(HTTP)@en[[[Secure]]]],[[S-HTTP]]
,[[SETUP]] ,RTSP ([RFC 2326])
,[[SET_PARAMETER]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[SHOWMETHOD]]]],[[HTTP]]
,[CODE(HTTP)@en[[[SPACEJUMP]]]],[[HTTP]]
,[CODE(HTTP)@en[[[SUBSCRIBE]]]],"[[HTTP]], [[SIP]]"
,[[TEARDOWN]] ,RTSP ([RFC 2326])
,[CODE(HTTP)@en[[[TEXTSEARCH]]]],[[HTTP]]
,[[TRACE]] ,"HTTP ([RFC 2068], [RFC 2616])"
,[CODE(HTTP)@en[[[TRACK]]]],[[HTTP]]
,[CODE(HTTP)@en[[[UNBIND]]]],[[HTTP]]
,[CODE(HTTP)@en[[[UNCHECKOUT]]]],[[HTTP]]
,[[UNLINK]] ,HTTP ([RFC 2068] 参考)
,[CODE[[[UNLOCK]]]] ,HTTP ([RFC 2518])
,[CODE(HTTP)@en[[[UNSUBSCRIBE]]]],[[HTTP]]
,[CODE(HTTP)@en[[[UPDATE]]]],"[[HTTP]], [[SIP]]"
,[CODE(HTTP)@en[[[UPDATEREDIRECTREF]]]],[[HTTP]]
,[CODE(HTTP)@en[[[VERSION-CONTROL]]]],[[HTTP]]
,[[WHEN]] ,HTCPCP ([RFC 2324])
]FIG]
** 参考文献
[REFS[
- [511] [CITE[List of HTTP methods (verbs) — Anne’s Blog]] ([TIME[2012-02-19 14:31:55 +09:00]] 版) <http://annevankesteren.nl/2007/10/http-methods>
- [512] [CITE@en-us[WebDAV Methods]] ([TIME[2012-02-19 14:32:08 +09:00]] 版) <http://msdn.microsoft.com/en-us/library/aa142917.aspx>
]REFS]
* データ
[520] [[メソッド]]の一覧とそれぞれの[[特性]]をまとめたデータが
[REFS[
- [CITE[data-web-defs/data/http-methods.json at master · manakai/data-web-defs]] ([TIME[2013-11-27 12:38:22 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/data/http-methods.json>
]REFS]
にあります。
* 歴史
** HTTP/1.0
[REFS[
- [517] [CITE[HTTP: A protocol for networked information: Predefined Methods]] ([TIME[1997-06-05 20:05:11 +09:00]] 版) <http://www.w3.org/Protocols/HTTP/Methods.html>
- [518] [[RFC 1945]]
]REFS]
** HTTP/1.1
[FIG[
[FIGCAPTION[
[502] RFC 1945 (HTTP/1.0); RFC 2068・2616 (HTTP/1.1) 5.1.1 Method
]FIGCAPTION]
> The Method token indicates the method to be performed on the resource
identified by the Request-URI. The method is case-sensitive.
[CODE(ABNF)[Method]] 字句は、 [CODE(ABNF)[[[Request-URI]]]]
で識別される[[資源]]に施される方式を示します。方式は大文字・小文字を区別します。
[DEL[
[DEL[
> [INS[{1945}]]
-
[PRE[
Method = "GET" ; Section 8.1
| "HEAD" ; Section 8.2
| "POST" ; Section 8.3
| extension-method
]PRE]
]DEL]
[INS[
> [INS[{2068}]]
-
[PRE[
Method = "OPTIONS" ; Section 9.2
| "GET" ; Section 9.3
| "HEAD" ; Section 9.4
| "POST" ; Section 9.5
| "PUT" ; Section 9.6
| "DELETE" ; Section 9.7
| "TRACE" ; Section 9.8
| extension-method
]PRE]
]INS]
]DEL]
[INS[
> [INS[{2616}]]
-
[PRE[
Method = "OPTIONS" ; Section 9.2
| "GET" ; Section 9.3
| "HEAD" ; Section 9.4
| "POST" ; Section 9.5
| "PUT" ; Section 9.6
| "DELETE" ; Section 9.7
| "TRACE" ; Section 9.8
| "CONNECT" ; Section 9.9
| extension-method
]PRE]
]INS]
>
- extension-method = token
> The list of methods [DEL[acceptable]] [INS[allowed]] by a [DEL[specific]] resource can [DEL[change dynamically; the client is notified through the return code of the response if a method is not allowed on a resource.]] [INS[be specified in an Allow header field (section 14.7). The return code of the response always notifies the client whether a method is currently allowed on a resource, since the set of allowed methods can change dynamically.]] [DEL[[INS[{1945,2068}]] Servers]] [INS[[INS[{2616}]] An origin server]] [DEL[should]] [INS[SHOULD]] return the status code [INS[405 (Method Not Allowed) if the method is known by the [INS[original]] server but not allowed for the requested resource, and]]
501 ([DEL[not implemented]] [INS[Not Implemented]]) if the method is unrecognized or not implemented [INS[by the [INS[original]] server]]. [DEL[[INS[[INS[{2068}]] The list of methods known by a server can be listed in a Public response-header field (section 14.35).]]]]
ある資源に認められる方式の目録は [CODE(HTTP)[[[Allow]]]] 頭欄に指定されます。
応答の復帰符号は方式が現在資源について認められているかどうかを常にクライアントに通知します。
認められる方式の集合は動的に変わり得るからです。
[[起源サーバー]]は、方式を起源サーバーが知っているがその要求された資源には認めない場合には [CODE(HTTP)[[[405]]]] (方式不認可)
[[状態符号]]を、起源サーバーが方式が認識できないか実装していない場合は
[CODE(HTTP)[[[501]]]] (未実装) 状態符号を返す'''べきです'''。[DEL[サーバーが知っている方式の目録は [CODE(HTTP)[[[Public]]]] 応答頭欄で列挙できます。]]
[DEL[
> [INS[{1945}]] The methods commonly used by HTTP/1.0 applications are fully defined in Section 8.
HTTP/1.0 応用が広く使っている方式は8章で完全に定義しています。
]DEL]
[INS[
> The methods GET and HEAD MUST be supported by all general-purpose
servers. All other methods are [DEL[optional]] [INS[OPTIONAL]]; however, if the above
methods are implemented, they MUST be implemented with the same
semantics as those specified in section 9.
方式 [CODE(HTTP)[[[GET]]]] および [CODE(HTTP)[[[HEAD]]]]
にすべての一般目的サーバーは対応しなければなりません。
他のすべての方式は'''[[任意選択]]'''です。しかし、
上の方式を実装する場合は、9章で規定する意味と同じに実装しなければ'''なりません'''。
]INS]
[INS[
注: 注記なき変更点は 1945 → 2068 の変更。
]INS]
* RFC 1945 (HTTP/1.0) 8.; RFC 2068・2616 (HTTP/1.1) 9 Method Definitions
> The set of common methods for [DEL[HTTP/1.0]] [INS[HTTP/1.1]] is defined below. Although
this set can be expanded, additional methods cannot be assumed to
share the same semantics for separately extended clients and servers.
HTTP の共通の方式 (method) の集合を次に定義します。
この集合は拡張可能ではありますが、追加の方式は別々の拡張されたクライアントやサーバーで同じ意味を共有しているとは仮定できません。
[INS[
> The Host request-header field (section 14.23) MUST accompany all
HTTP/1.1 requests.
[CODE(HTTP)[[[Host]]]] 要求頭欄はすべての HTTP/1.1
要求に伴わなければ'''なりません'''。
]INS]
** RFC 2068・2616 (HTTP/1.1) 9.1 Safe and Idempotent Methods
→[CODE(WikiPage)[[[安全]]]]
** RFC 1945 (HTTP/1.0) 9.1〜; RFC 2068・2616 (HTTP/1.1) 9.2〜
(各 method の定義 : 省略)
* RFC 1945 (HTTP/1.0) D.1; RFC 2068 (HTTP/1.1) 19.6.1 Additional Request Methods
(各 method の定義 : 省略)
* RFC 2616 (HTTP/1.1) 19.6.3 (抜粋)
> The PATCH, LINK, UNLINK methods were defined but not commonly
implemented in previous versions of this specification. See RFC 2068 [33].
この仕様書の以前の版で
[CODE(HTTP)[[[PATCH]]]], [CODE(HTTP)[[[LINK]]]], [CODE(HTTP)[[[UNLINK]]]]
方式が定義されていましたが、広くは実装されていません。
[[RFC 2068]] 参照。
* RFC の部分のライセンス
[[RFCのライセンス]]
]FIG]
* メモ
[519] [CITE@en[draft-ietf-httpbis-method-registrations-13 - Initial Hypertext Transfer Protocol (HTTP) Method Registrations]]
( ([TIME[2013-09-25 22:18:51 +09:00]] 版))
<http://tools.ietf.org/html/draft-ietf-httpbis-method-registrations-13>