5

HTTP仕様では、Transfer-Encodingヘッダーはリクエストに許可されると規定されていますが、サーバーが特定のTransfer-Encodingを理解していない場合、サーバーはどのエラーコードに応答する必要がありますか。

私の知る限り、HTTP標準はこの可能性をカバーしていませんが、おそらく私はそれを見落としているのかもしれません。

4

6 に答える 6

4

転送エンコーディングが不明な場合、HTTP エラー 501 "NOT IMPLEMENTED" が発生します。少なくとも Apache はそうしています。

http://argray.com/unixfaq/httpd_error_codes.shtmlも参照してください。

編集:対応する RFC セクションへのポインター: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2

于 2009-03-28T15:18:28.097 に答える
3

私はこれに対する答えが自明ではないことに同意し、HTTP WG のメーリング リストでフォローアップしました。

更新: Björn H. は当然のことながら次のように指摘しています。

RFC 2616 のセクション 3.6:

転送コードが理解できないエンティティ本体を受信したサーバーは、501 (未実装) を返し、
接続を閉じる必要があります。

したがって、すでにこれに対処しています。

于 2009-03-30T12:00:44.017 に答える
1

主に個人的な意見です。

私はいつも、5xx エラーは何かが倒れたような実際のプログラミング エラーだと思っていました。サーバーがリクエストを理解していない場合、問題はリクエストにあるため、サーバーでの失敗したプロセスではないため、4xxエラーの方が適切な応答であると言えます。どの 4xx かはわかりませんが、いくつかあるので、1 つを選択するのは難しいことではありません。

于 2012-10-19T01:09:46.537 に答える
0

RFC-2616 はサーバーがそれを理解する必要があると述べているため、おそらくチャンク エンコーディングを理解できない場合は、501 ではなく500 内部サーバー エラーであるはずです。

ただし、サーバーがチャンク化されたボディを含むリクエストを受け入れないことを選択し、これをクライアントのせいにしたい場合、合法的にそうする1つの方法は411 Length Requiredです。いずれにせよ、どちらもなしでリクエストを送信するのは実際的ではありません。

于 2012-10-30T13:35:07.937 に答える
0

HTTP バージョンが無効なリクエストTransfer-Encodingは形式が正しくありません。したがって、サーバーは400 Bad Request.

于 2009-03-28T15:11:35.137 に答える
-1

RFC は少し不明確ですが、私見では406 Not Acceptableである必要があります。

于 2009-03-28T15:10:35.200 に答える