意味
Range ヘッダーの要求どおり、サーバーがリソースの一部だけを返しています。Content-Range がどのバイトを含むかを示します。
よくある原因
- 動画や音声のプレーヤーがファイル内をシークした
- ダウンロードマネージャーが再開や分割ダウンロードをした
- PDF ビューアーがページを必要に応じて読み込んだ
対処法
クライアント・閲覧者の場合
Content-Range を使って範囲を組み立てます。200 が返った場合、サーバーは Range を無視しており、ファイル全体を受け取っています。
サイトや API の運営者の場合
Accept-Ranges: bytes を通知し、範囲を検証して、満たせない範囲には 416 を返します。圧縮やプロキシがバイト範囲を壊さないようにします。
レスポンス例
HTTP/1.1
HTTP/1.1 206 Partial Content
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Range: bytes 0-1023/146515
Content-Length: 1024
Content-Type: video/mp4 仕様
よくある質問
› 動画がシークできないのはなぜ?
サーバーが範囲リクエストに 206 ではなく 200 を返している可能性が高いです。サーバーや CDN でバイト範囲のサポートを有効にします。
› 206 に複数の範囲を含められますか?
multipart/byteranges で可能ですが、多くのクライアントは一度に 1 つの範囲しか要求しません。