Content-Range
Penggunaan
Header Content-Range muncul pada respons 206 Partial Content ketika server memenuhi sebuah permintaan Range dengan hanya mengirimkan sebagian dari sumber daya. Header ini menentukan rentang byte dari konten parsial tersebut dan ukuran total sumber daya lengkapnya.
Permintaan rentang memungkinkan unduhan yang efisien. Klien yang terputus saat transfer berkas besar melanjutkan dari titik koneksi terputus alih-alih mengulang dari awal. Pemutar media menggunakan permintaan rentang untuk melompat ke posisi tertentu di berkas audio atau video tanpa mengunduh keseluruhan stream.
Server mengumumkan dukungan permintaan rentang melalui header Accept-Ranges, yang umumnya disetel ke bytes. Ketika sebuah permintaan rentang meminta rentang byte di luar batas sumber daya, server merespons dengan 416 Range Not Satisfiable dan menyertakan header Content-Range yang menunjukkan ukuran sumber daya sebenarnya.
Sintaksnya mengikuti format terstruktur dengan tiga komponen: unit (hampir selalu bytes), rentang byte, dan ukuran lengkapnya.
Content-Range: <unit> <range-start>-<range-end>/<size>
unit
Tipe unit untuk rentang tersebut. Nilai bytes adalah satu-satunya unit yang diimplementasikan secara luas.
range-start
Bilangan bulat berbasis nol yang menunjukkan byte pertama dari rentang yang dikembalikan.
range-end
Bilangan bulat berbasis nol yang menunjukkan byte terakhir dari rentang yang dikembalikan, inklusif.
size
Ukuran total sumber daya lengkap dalam byte. Tanda bintang (*) menggantikan ukuran tersebut ketika panjang totalnya tidak diketahui, seperti pada konten streaming atau konten yang dihasilkan secara dinamis.
Contoh
Sebuah klien melanjutkan unduhan mulai dari byte 1000 pada berkas dengan ukuran total 65.000 byte. Server mengembalikan byte 1000 hingga 2000 inklusif.
Content-Range: bytes 1000-2000/65000
Sebuah sumber daya streaming mengirimkan sebuah rentang tanpa mengetahui ukuran totalnya. Tanda bintang menandakan panjang lengkap yang tidak diketahui.
Content-Range: bytes 1000-2000/*
Sebuah server menolak permintaan rentang karena byte yang diminta melampaui ukuran sumber daya. Respons membawa status 416 Range Not Satisfiable dan melaporkan ukuran sebenarnya.
HTTP/1.1 416 Range Not Satisfiable
Content-Range: bytes */50000
Sebuah respons rentang multipart mengirimkan beberapa rentang dalam satu respons. Setiap bagian menyertakan header Content-Range-nya sendiri di dalam badan multipart/byteranges.
HTTP/1.1 206 Partial Content
Content-Type: multipart/byteranges; boundary=BOUNDARY
--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 0-499/10000
[first 500 bytes]
--BOUNDARY
Content-Type: text/plain
Content-Range: bytes 9500-9999/10000
[last 500 bytes]
--BOUNDARY--
Catatan
Content-Length menyatakan ukuran total badan pesan dalam byte. Content-Range mengidentifikasi segmen byte spesifik mana dari sumber daya lengkap yang dimuat oleh respons saat ini. Respons penuh hanya menggunakan Content-Length; respons 206 Partial Content menggunakan kedua header tersebut bersamaan.