7

RFC 2616から、HTTPクライアントがContent-Length:0またはTransfer-Encoding:チャンクヘッダーを含む204NoContent応答を受け入れる必要があるかどうかを判断できません。これらのヘッダーは、一部のHTTPクライアントとプロキシを破壊しているように見えます。これらは明らかに空の応答本文を読み取ろうとしますが、仕様では次のようになっています。

  1. 「MUSTNOT」にメッセージ本文が含まれる応答メッセージ(1xx、204、304応答、HEAD要求への応答など)は、エンティティに関係なく、常にヘッダーフィールドの後の最初の空行で終了します。メッセージに存在するヘッダーフィールド。

私にとって、「エンティティヘッダーフィールドに関係なく」は、クライアントがこの状況を許容する必要があることを意味します。ErlangHTTPライブラリはこの解釈を選択しました。ただし、lighttpdIBMは反対の解釈を選択しました。つまり、本文を持つことが禁止されている応答に対して、サーバーにこれらのヘッダーを含めないようにする必要があります。

したがって、Webアプリケーションはこれらのヘッダーを応答から削除する必要がありますか、それともネットワークインフラストラクチャとクライアントは204コンテンツなし、304変更なしなどでこれらのヘッダーを許容する必要がありますか?

4

2 に答える 2

6

29ページの最後にあるRFC7230( https://www.rfc-editor.org/rfc/rfc7230#section-3.3.1を参照)によると、次のように記載されています。

サーバーは、ステータスコードが1xx(情報)または204(コンテンツなし)の応答でTransfer-Encodingヘッダーフィールドを送信してはなりません(MUSTNOT)。

したがって、Webアプリケーションはこれらのヘッダーを応答とともに送信しないでください。

于 2015-02-10T12:23:30.687 に答える
2

HTTPプロトコルの詳細がわからないため、何が正しいかはわかりません。

ただし、次のことを自問する必要があります。

  1. アプリケーションを変更してこれらのヘッダーを削除できますか?
  2. または、これらのヘッダーを無視するようにアプリケーションのコンシューマーを変更できますか?

私の意見では、その場合、アプリケーションはそれらのヘッダーを送信するべきではありません。

于 2009-05-26T21:42:16.630 に答える