この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 8759|答える: 0

HTTPプロトコルにおけるコンテンツ長の詳細な解釈

[リンクをコピー]
掲載地 2019/09/24 15:53:29 | | |
コンテンツ長はメッセージ本体の転送長を記述するために使われます。 HTTPプロトコルでは、メッセージエンティティの長さと送信距離に違いがあります。例えば、gzip圧縮下では、メッセージエンティティの長さは圧縮前の長さ、メッセージエンティティの送信距離はgzip圧縮後の長さです。

特定のHTTPインタラクションにおいて、クライアントがメッセージの長さを取得する方法は主に以下のルールに基づいています。

応答が1xx、204、304、またはヘッドリクエストの場合、メッセージエンティティの内容は直接無視されます。
転送符号化が存在する場合、対応する長さを求めるために転送符号化の方法が好まれます。 例えば、チャンクモデルです。
「もし頭部にコンテンツ長があるなら、その内容の長さは身体の長さと伝達の長さの両方を表します。 エンティティの長さと転送の長さが等しくない場合(例:転送符号化が設定されている場合)、コンテンツ長は設定できません。転送エンコーディングが設定されている場合、Content-Lengthは無視されます”。 この文変換の利点は、一つの点だけが存在することです:転送符号化では、Content-Lengthが存在し得ません。
レンジトランスミッション。 私は注意を払わず、詳細に読まなかった:)
サーバー経由で接続を切断すると、送信されるメッセージの長さが決まります。 (リクエスターは接続を閉じてリクエスト体の終わりを示すことはできません。なぜなら、そうするとサーバーが応答を続ける機会が失われてしまうからです。) この状況は主に短い接続、すなわち非生存モードに対応します。
HTTP 1.1はチャンクモードをサポートしなければなりません。 メッセージの長さが不確かな場合、チャンク機構でこの状況を処理できるためです。
メッセージ内容を含むヘッダーにcontent-lengthフィールドがある場合、対応する値はメッセージトピックの長さと正確に一致しなければなりません。
「メッセージのエンティティ長とは、転送コーディングが適用される前のメッセージ本体の長さです」
それですチャンクが存在する場合、コンテンツ長は存在しません

HTTP/1.0の永続接続メカニズムは後に導入され、Connection: keep-aliveというヘッダーを通じて実装されます。これはサーバーとクライアント双方が、データを後で使うために送信後にTCP接続を切断する必要がないことを伝え合うために使えます。HTTP/1.1では、すべての接続が永続的であることが求められますヘッダーの近くに明示的にConnection:を追加しない限り。 実際、HTTP/1.1のConnectionヘッダーフィールドにはkeep-aliveの値はありませんが、歴史的な理由から多くのウェブサーバーやブラウザはHTTP/1.1の長い接続にConnection: keep-aliveを送信する習慣を残しています。

実際、最後のいくつかはほとんど無視しても大丈夫で、簡単にまとめると次の通りです。


1. コンテンツ長:もし存在し有効であれば、メッセージ内容の伝送時間と全く同じでなければなりません。 (短すぎる場合は切り詰め、タイムアウトが起こるほど長すぎる場合はテスト済みです。) )
2. 転送エンコーディング(Transfer-Encoding)がある場合(フォーカスがチャンク化されている)、ヘッダーにContent-Lengthが存在せず無視されます。
3. 短い接続を使用する場合、サーバー経由で接続を閉じることでメッセージの伝送時間を直接決定できます。 (これは理解しやすいです)
例えば、HTTPプロトコルの他の機能と組み合わせて、Http1.1はKeep aliveをサポートしていませんでした。 すると次の結論が導き出せます。
1. Http 1.0以前のバージョンでは、コンテンツ長フィールドは任意です。
2. http1.1以降のバージョンで。 生き続けるなら、コンテンツの長さとチャンクはそのどちらかに違いありません。 もし生存を保っていなければ、それはhttp1.0と同じです。 内容の長さ。





先の:「Node.js: Let's Dozen C++ Extensions」PDFスキャン版 [146MB]
次に:Httpプロトコルのコンテンツ長
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com