「マルチパート HTTP リクエストのコンテンツの長さはどのように計算されますか?」という質問に対する、矛盾するややあいまいな回答を読みました。具体的には、次のように思います。
- 「Content-length」ヘッダーが計算される正確なコンテンツ範囲は?
- CRLF ("\r\n") オクテット シーケンスは 1 オクテットまたは 2 オクテットとしてカウントされますか?
誰かがこれらの質問に答える明確な例を提供できますか?
「マルチパート HTTP リクエストのコンテンツの長さはどのように計算されますか?」という質問に対する、矛盾するややあいまいな回答を読みました。具体的には、次のように思います。
誰かがこれらの質問に答える明確な例を提供できますか?
次の実際の例は、うまくいけば質問に答えるはずです。
Google の OAuth 2.0 Playground Web ページは、Google ドライブ クラウドに対してマルチパート HTTP 要求を実行する優れた方法です。これを行うために、Google ドライブについて何も理解する必要はありません。すべての作業は私が行います。関心があるのは、HTTP 要求と応答だけです。ただし、プレイグラウンドを使用すると、必要に応じてマルチパートを試したり、他の質問に答えたりすることができます。
「test-multipart.txt」という名前のローカル テキスト ファイルを作成し、ファイル システムのどこかに保存しました。ファイルは 34 バイトの大きさで、次のようになります。
We're testing multipart uploading!
最初に、URL https://developers.google.com/oauthplayground/を使用して、ブラウザーで Google の OAuth 2.0 Playground を開きます。
Drive API v2 と「https://www.googleapis.com/auth/drive」を選択し、「Authorize APIs」を押します。
[トークンの Exchange 認証コード] をクリックします。
ここでは、関連するすべてのマルチパート リクエスト情報を示します。
{"タイトル": "test-multipart.txt", "親": [{"id":"0B09i2ZH5SsTHTjNtSS9QYUZqdTA"}], "プロパティ": [{"種類": "ドライブ#プロパティ", "キー": " cloudwrapper", "値": "true"}]}
Google の OAuth 2.0 Playground は、必要なすべてのヘッダーを奇跡的に挿入し、コンテンツの長さを計算し、境界シーケンスを生成し、必要に応じて境界文字列を挿入し、サーバーの応答を表示します。
マルチパート HTTP リクエストは 200 ステータス コードで成功したため、リクエストとレスポンスは信頼できるものです。Google の Playground は、マルチパート HTTP アップロードを実行するために必要なものをすべて挿入しました。「Content-length」が 352 に設定されていることがわかります。ヘッダーに続く空白行の後の各行を見てみましょう。
--===============0688100289==\r\n コンテンツ タイプ: application/json\r\n \r\n {"タイトル": "test-multipart.txt", "親": [{"id":"0B09i2ZH5SsTHTjNtSS9QYUZqdTA"}], "プロパティ": [{"種類": "ドライブ#プロパティ", "キー": " cloudwrapper", "value": "true"}]}\r\n --===============0688100289==\r\n コンテンツ タイプ: text/plain\r\n \r\n マルチパート アップロードをテストしています!\r\n --===============0688100289==--
9 行ありますが、最初の 8 行のそれぞれの末尾に手動で「\r\n」を追加しました (読みやすくするため)。各行のオクテット (文字) の数は次のとおりです。
オクテットの合計は 344 であり、各 '\r\n' を単一の 1 オクテット シーケンスと見なすと、切望されているコンテンツの長さは 344 + 8 = 352 になります。
調査結果を要約すると、次のようになります。