RFC には次のように記載されています。
10.4.6 405メソッドは許可されていません
Request-URI で識別されるリソースに対して、Request-Line で指定されたメソッドは許可されていません。応答には、要求されたリソースの有効なメソッドのリストを含む Allow ヘッダーが含まれている必要があります。
ただし、その MUST に準拠する単一のサーバーを特定できませんでした。
さまざまなプロキシや動的アプリケーションなどが存在することを考えると、最新の Web サーバーでその要件を満たすのは非常に難しいことがわかります。
- なぜ、歴史的に、その要件は理にかなっているのですか?
- その動作に依存するものはありますか?そのユースケースは何ですか?
- httpのこの側面を「適切に」実装するWebサーバーはありますか? 私の知る限り、IIS (少なくとも ASP.NET を使用している場合) や一部の "RESTful" API でさえ、偽のメソッドを指定すると 405 ではなく 404 を返します。
さらに、BOGUS など、明らかにサーバーによって実装されていないメソッドに対して、サーバーが 405 を返すのはなぜですか?
HTTP のこれらの部分は、仕様に準拠しているサーバーがあるかどうかを見て、「痕跡」と見なす必要がありますか?
実際、ほとんどのフレームワークが「Allow」を適切に返すことはそれほど難しくありません。私が知っているすべてのフレームワークでは、特定のコントローラーが呼び出されるメソッド (通常はデフォルトで GET) を指定する必要があり、コードは拡張メソッドをフレームワークに簡単に登録して、それを返すことができます。
これまでのところ、証拠は、a) 誰も仕様を読んでおらず、誰もこの要件について知らない、b) 誰もこの機能を気にしていない、のいずれかを示しているようです。