2009-05-26 3 views
7

RFC 2616から、HTTPクライアントがContent-Length:0または転送エンコーディング:チャンクヘッダを含むNo Contentレスポンスを受け入れるべきかどうかを知ることはできません。これらのヘッダは明らかに空の応答本文をお読みしようとしている、いくつかのHTTPクライアントとプロキシを破るように見えるが、the spec reads204コンテンツレスポンスが壊れているContent-LengthまたはTransfer-Encodingを送信するHTTPアプリケーションはありますか?

  1. (例えば とメッセージボディを含ん「てはならない」任意の応答メッセージヘッダーフィールドの後の最初の空の 行によって常に終了されます。 メッセージ内にエンティティヘッダーフィールド が存在するかどうかに関係なく、常に が終了します。私に

は「関係なく、エンティティヘッダフィールドの」クライアントがこの事態を容認すべきであることを意味します。 Erlang HTTP libraryはこの解釈を選択しました。しかし、lighthttpdIBMは逆の解釈を選択しました。つまり、サーバーは本文を持つことが禁止されているレスポンスに対してこれらのヘッダーを含めるべきではありません。

Webアプリケーションはこれらのヘッダーを応答から削除するか、ネットワークインフラストラクチャとクライアントが204コンテンツなし、304未修正などのヘッダーを許容していなければなりませんか?

答えて

6

http://tools.ietf.org/html/rfc7230#section-3.3.1を参照してください)ページ29の終わりに、それは述べている:

をサーバ(1XXのステータスコードで任意の 応じて転送-Encodingヘッダフィールドを送ってはいけません情報)または204(No コンテンツ)。

したがって、Webアプリケーションは応答とともにこれらのヘッダーを送信すべきではありません。

+0

ニース - 6年後、あなたは正しい答えを得ました! –

2

私は正しいことを教えてくれません。その詳細なHTTPプロトコルはわかりません。

しかし、あなた自身に尋ねるようになった:

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

私の意見では、アプリケーションはこれらのヘッダーを送信してはなりません。 RFC7230によると

関連する問題