複数のコンテンツ長ヘッダがある場合は、私は複数のコンテンツ長ヘッダと複数の転送エンコーディングヘッダ
- 、
- 使用する最初のものを使用し
- (私はそうは思いません?)失敗します最後の1つ
私は同様の質問もヘッダーを転送しています。私はtransfer_encodingと最後のものを使うべきだと思います。
「Host」ヘッダーについても同様です。
おかげで、 ディーン
Content-Length
複数のコンテンツ長ヘッダがある場合は、私は複数のコンテンツ長ヘッダと複数の転送エンコーディングヘッダ
私は同様の質問もヘッダーを転送しています。私はtransfer_encodingと最後のものを使うべきだと思います。
「Host」ヘッダーについても同様です。
おかげで、 ディーン
Content-Length
は単一値ヘッダです。通常、最後のヘッダーには権限があります。しかしRFC 7230, section 3.3.2状態:メッセージのリストを含むフィールドの値と同じ小数点値、または単一Content-Lengthヘッダフィールドからなるフィールド値を有する複数のContent-Lengthヘッダフィールドを有する
を受信した場合重複したContent-Lengthヘッダフィールドが上流のメッセージプロセッサによって生成または結合されたことを示す同一の10進値(例えば、「Content-Length:42,42」)を受信者は無効として拒絶するか、メッセージ本文の長さを決定するかメッセージを転送する前に、その10進値を含む単一の有効なContent-Lengthフィールドを持つフィールド値。それはリストを含むされるよう
Transfer-Encoding
は別の問題です。複数のものがあり、すべてが有効です。ここで重要なのは、適用されたエンコーディングが、適用された順にリストされなければならないということです。例えば。コンテンツはgzipで圧縮され、その後、チャンクエンコードされている場合、ヘッダは
Transfer-Encoding: gzip, chunked
または
Transfer-Encoding: gzip
Transfer-Encoding: chunked
ようWRTのコンテンツの長さを見ている:両方の値が同じである場合を除きはい、あなたは実際に(失敗しなければなりませんあなたは1つを選ぶかもしれません)。 RFC 7230を参照してください。
"Transfer-Encoding"は、複数の値を許す点で異なります。あなたはすべてを順番に処理する必要があります。
"意味的に最後のヘッダーは、以前のヘッダーを上書きしています。"誰もそれを定義していません。また、「重複は無視されます」と言うこともできます。 –
@JulianReschke「重複は無視されます」ということは、実際は同じではありません。過去のこのような状況を処理した方法は、すべての以前のヘッダーを無視して、最後のヘッダーを効果的に許可することでした。私の答え、btwを更新しました。 – DaSourcerer
それは私の要点でした。最後のものを使用することは、最初のもの(またはランダムな1つのftm)を使用するよりも明白ではありません –