-
Notifications
You must be signed in to change notification settings - Fork 4
/
58.txt
136 lines (95 loc) · 6.45 KB
/
58.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
[406] [[HTTP]] の[[状態符号]] [DFN[[CODE(HTTP)[[[501]]]]]] は、[[要求]]で指定された機能が[[鯖]]側で実装されていないことを表します。
* 仕様書
[REFS[
- [536] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-6.6.2>'''
- [508] [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.1.1>
- [534] [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-4>
- [2] [CITE[OData Version 4.0 Part 1: Protocol Plus Errata 01]] ([TIME[2014-09-04 16:00:00 +09:00]] 版) <http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html#_Toc370126043>
]REFS]
* 意味
[537] [CODE(HTTP)[[[501]]]] は、[[鯖]]が[[要求]]を処理するために必須の機能に対応していないことを示します
[SRC[>>536]]。
* 文脈
[502] 例えば、[[要求]]で指定された[[メソッド]]が実装されていないときに使います。
[507] 実装しているどの[[メソッド]]よりも長い[[メソッド]]を受信した[[鯖]]は、
[CODE(HTTP)[[[501]]]] を返す[['''べきです''']] [SRC[>>508]]。
[532] [[起源鯖]]は、[[要求メソッド]]を認識できないか、実装していない時は、
[CODE(HTTP)[[[501]]]] [[応答]]を返す[['''べきです''']] [SRC[>>534]]。
;;
[533] [[起源鯖]]は、[[要求メソッド]]を知っているものの、[[対象資源]]に対して認めていない時は、
[CODE(HTTP)[[[405]]]] [[応答]]を返す[['''べきです''']] [SRC[>>534]]。
;; [539] 実際のところ [CODE(HTTP)[[[405]]]] と [CODE(HTTP)[[[501]]]]
を分ける意味があるのかは謎ですが...
;; [1] 以前は [CODE(HTTP)@en[[[PUT]]]] [[要求]]で未知の [CODE(HTTP)@en[[[Content-*:]]]]
[[ヘッダー]]が用いられている場合にも [CODE(HTTP)[[[501]]]]
[[応答]]が使われていましたが、 [[RFC 7231]] でその規定は削除されています。
;; [4] [CODE(HTTP)@en[[[Expect:]]]] で指定された機能については [CODE(HTTP)[[[417]]]] が、
[CODE(HTTP)@en[[[Accept:]]]] などで指定された[[内容折衝]]系の機能については
[CODE(HTTP)[[[406]]]] が別途用意されています。
[3] [[OData]] では、[[クライアント]]が要求した機能を実装していない時に
[CODE(HTTP)[[[501]]]] [[応答]]を返す [SRC[>>2]] とされています。
[[要求メソッド]]以外の機能にも適用されるようです。
[8] [[CEA-2014-B]]
* 構文
[542] 実装している[[メソッド]]の一覧が[[応答]]の [CODE(HTTP)@en[[[Allow:]]]]
[[ヘッダー]]により明示されることがあります。しかし仕様上は要求されてはいないようです。
* 処理
[538] [CODE(HTTP)[[[501]]]] [[応答]]は[[キャッシュ可能]]です [SRC[>>536]]。
* 実装
[540] [[Apache]] は未知の[[要求メソッド]]を指定すると
[CODE(HTTP)[[[501]]]] を返します。 [CODE(HTTP)@en[[[Allow:]]]]
[[ヘッダー]]もあります。 [TIME[2014-08-28T12:04:26.400Z]]
[541] [[nginx]] は未知の[[要求メソッド]]を指定すると
[CODE(HTTP)[[[405]]]] を返します。 [CODE(HTTP)@en[[[Allow:]]]]
[[ヘッダー]]はありません。[[要求メソッド]]の名前に[[小文字]]が含まれると[[要求行]]を受け取った時点で
[CODE(HTTP)[[[400]]]] を返します。 [TIME[2014-08-28T12:05:04.700Z]]
* 関連
[503] 不適当な[[メソッド]]の時に返され得る[[メソッド]]には、他に [CODE(HTTP)[[[405]]]]
があります。 [[HTTP]] 仕様上は、[[メソッド]]を知っているものの当該[[資源]]に対する動作が未定義の時は
[CODE(HTTP)[[[405]]]] を、そもそも存在さえ知らず扱い方がわからない[[メソッド]]の時は
[CODE(HTTP)[[[501]]]] を返す、とされています。
;; [506] [[CGI]] の [[RFC]] は[[メソッド]]未対応の場合にこれら2つの[[状態符号]]が使えることを述べています
[SRC[>>505]] が、その両者の違いは説明していません。
[REFS[
- [505] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) <http://tools.ietf.org/html/rfc3875#page-27>
]REFS]
[504] 現実には、[[HTTP鯖]]や[[CGIスクリプト]]などの鯖側の実装が、未知の[[メソッド]]の指定は無視して
[CODE(HTTP)@en[[[GET]]]] など既知の[[メソッド]]であるものとみなして処理することもあります。
[7] [CITE[ストライクウィッチーズ]]とは無関係です。
* 歴史
[FIG(quote)[
[FIGCAPTION[
[509] RFC 1945 (HTTP/1.0); RFC 2068・RFC 2616 (HTTP/1.1) 10.5.2 501 Not Implemented
]FIGCAPTION]
> The server does not support the functionality required to fulfill the request.
This is the appropriate response when the server does not
recognize the request method and is not capable of supporting it for any resource.
サーバーは、要求を満たすのに必要な機能に対応していません。
これは、サーバーが要求 method を認識せず、どの資源もそれに対応する能力がないときに適切な応答です。
]FIG]
[REFS[
- [535] [CITE@en[RFC 7252 - The Constrained Application Protocol (CoAP)]]
( ([TIME[2014-06-27 00:59:37 +09:00]] 版))
<http://tools.ietf.org/html/rfc7252#section-5.9.3.2>
]REFS]
[543] [CITE@en[RFC 3507 - Internet Content Adaptation Protocol (ICAP)]]
( ([TIME[2014-06-08 07:17:07 +09:00]] 版))
<http://tools.ietf.org/html/rfc3507#section-4.3.3>
[FIG(quote)[
[FIGCAPTION[
[5] [CITE@en[RFC 7482 - Registration Data Access Protocol (RDAP) Query Format]]
([TIME[2015-03-26 08:10:36 +09:00]] 版)
<https://tools.ietf.org/html/rfc7482>
]FIGCAPTION]
> Servers MUST return an
> HTTP 501 (Not Implemented) '''['''RFC7231''']''' response to inform clients of
> unsupported query types.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[6] ([TIME[2014-07-03 18:27:57 +09:00]] 版)
<http://storage.sakura.ad.jp/pdf/base_storage_api_reference.pdf>
]FIGCAPTION]
> リクエストに関係のない HTTP ヘッダをつけた場合、 HTTP 501 Not Impremented エラーを返します
> ユーザ定義ヘッダは エラーとなります
]FIG]