Slate Errors

Success (2xx)

206

Partial Content

— 部分内容

まずは確認: よくある原因 TOP3

  1. 動画/音声のシークやストリーミング再生
    プレイヤーが必要な範囲だけを Range で要求する
  2. 大きなファイルのレジューム可能ダウンロード
    通信が切れても続きから再開できる
  3. ファイルチャンクの並列ダウンロード
    高速化のために複数の範囲を同時取得

うまくいった証

206 は「君が指定した範囲だけ、その分のデータを返したよ」というサインです。 プールに例えると、「全長は泳がなくていい、ここからここまでだけ往復してみよう」と先生に区間を切られて、その区間だけを正確に泳ぎきる——あの「指定範囲だけクリア」の感触に似ています。

クライアントが Range ヘッダで「最初の 1MB だけ」「ここから 5MB だけ」と要求すると、サーバーはその部分だけを 206 で返します。動画プレイヤーのシーク、レジューム可能なダウンロード、大容量ファイルの効率配信に欠かせない仕組みです。

プールからのひとこと

プールでの練習では、いつも端から端まで泳ぐとは限りません。「今日は 25メートル のうち、最後の 10メートル だけタイムを計るよ」と先生が言えば、生徒はその区間だけ集中して泳ぎます。短くても、ちゃんとした成果として認められる。

206 もそれと同じです。「全部じゃなく一部だけ」を成功として返す。Content-Range ヘッダに「全体のどこを返したか」が入るので、クライアントは続きを取りに行くことも、必要な範囲だけ使うこともできます。

次への一歩

うまくいった、次はこうしてみよう:

  1. Content-Range を見て位置を把握:全体のどの範囲かを確認してバッファに入れる
  2. 必要なら追加 Range を要求:続きが必要なら次のチャンクをリクエスト
  3. 不正な範囲には 416 が返ることを想定:境界外を要求しないよう注意
  4. ストリーミングは Range 対応必須 (管理者向け):CDN や静的配信サーバーが Range をサポートしているかを確認

実際にはこう見える

$ リクエスト

curl -i https://example.com/some/path

↓ レスポンス

HTTP/1.1 206 Partial Content
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<html><body><h1>206 Partial Content</h1></body></html>

似ているケース

もっと知りたい