解説
206 Partial Contentは失敗?ファイルの一部を返す応答を知ろう
ファイルを受け取る通信に206と出ていた。200ではないから失敗、とは限らず、要求した一部分を返す成功の応答かもしれないよ。

ファイルを受け取る通信に206と出ていた。200ではないから失敗、とは限らず、要求した一部分を返す成功の応答かもしれないよ。
このページではHTTPの部分取得を知る。実際の大きな動画を何度も取得せず、10バイトの架空のデータを例にする。準備は文字列を読めるメモだけで大丈夫。
全体と一部分を分ける
HTTP 206 Partial Contentは、Rangeによる要求などに対して、対象の一部を返すときに使われる。動画の再生や、条件に合うダウンロードの再開などで役立つ仕組みだよ。
たとえば全体が0123456789の10バイトで、最初の4バイトだけを求めるなら、説明用の要求は次の形になる。
Range: bytes=0-3
バイトの位置は0から数える。0から3までを含むので、返すのは0123の4バイトだよ。文字数とバイト数は一般には同じではないけれど、この例は英数字だけなので一文字を一バイトとして扱える。
Content-Rangeを読む
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-3/10
Content-Length: 4
0-3は今回の範囲、/10は全体のサイズ。本文が4バイトしかなくても、全体が4バイトという意味ではないよ。この応答と0123の本文を、ローカルの小さな練習サーバーで照合した。
Rangeを送れば必ず206、ではない
配信先が範囲要求を無視して、全体を200で返す場合もある。要求が満たせない場合などには、別の応答になる。受け取る側は、実際のステータスとヘッダーを読んで処理する必要があるよ。
一部のデータを受け取れたことと、全体を正しくそろえたことも別。再開処理では、元のファイルが変わっていないかなどの条件も関係する。
画面の不具合とは分ける
開発者ツールで206を見つけたことだけで、動画が途中で壊れたと決めつけない。どのURLへどの範囲を要求し、どの応答と本文が返ったかを見る。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。