0

Range ヘッダーの HTTP/1.1 仕様 ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35 ) に従って、次のように述べられています。

HTTP でのバイト範囲の指定は、entity-body の一連のバイトに適用されます (必ずしも message-body と同じである必要はありません)。

私の質問は、サイズが 1GB のバイナリ ファイルのダウンロードを要求していて、128MB の複数の暗号化されたブロックがあるとします。HTTP のバイト範囲は HTTP エンティティではなくファイルのサイズと等しくないため、これらのチャンクを境界を壊さずにサーバーから並列にダウンロードします。ファイルを再構築したくないことに注意してください。これらのブロックを個別に処理して復号化したい。どの Range ヘッダーが最適で、その Range ヘッダーで送信される正しい値を取得する方法は?

ありがとう、

4

1 に答える 1

0

Range ヘッダーは、完全な HTTP エンティティではなく、その HTTP エンティティのエンティティ本体のみに適用されます。HTTP メッセージ RFC ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html ) は言う

HTTP メッセージのメッセージ本体 (存在する場合) は、要求または応答に関連付けられたエンティティ本体を運ぶために使用されます。メッセージ本文は、Transfer-Encoding ヘッダー フィールド (セクション 14.41) で示されるように、転送コーディングが適用された場合にのみエンティティ本体と異なります。

もう 1 つの参考資料としてhttp://www.ietf.org/rfc/rfc3229.txt (セクション 4 - HTTP メッセージ生成シーケンス) があり、HTTP 応答がどのように生成されるかが説明されています。概念的には、Range ヘッダーと転送エンコーディングの両方が要求で提供される場合、Range が最初にメッセージ応答生成に適用され、次に転送エンコーディングが適用されます。ほとんどの HTTP サーバーはこれを確認する必要があると思うので、メッセージ コンテンツの長さに関する範囲ヘッダーを適用できます。

于 2013-02-04T17:25:17.450 に答える