HTTPQUERY
Bahasa Indonesia

If-Range

Penggunaan

Klien menggunakan If-Range ketika melanjutkan unduhan parsial atau mengambil rentang byte tertentu dari sumber daya yang diperoleh sebelumnya. Header ini membawa salah satu dari nilai ETag atau tanggal Last-Modified sebagai validator. Hanya satu bentuk yang diperbolehkan per permintaan.

Perbedaan utamanya dengan If-Match terletak pada apa yang terjadi ketika kondisi gagal. Kegagalan If-Match menghasilkan error 412 Precondition Failed dan menghentikan permintaan. Kegagalan If-Range berakhir dengan baik: server mengabaikan header Range dan mengembalikan seluruh sumber daya dengan status 200. Hal ini membuat If-Range lebih aman untuk pelanjutan unduhan karena klien selalu menerima data yang dapat dipakai.

Permintaan bersyarat dengan If-Range membutuhkan header Range pada permintaan yang sama. Tanpa header Range, server mengabaikan If-Range sepenuhnya.

entity-tag

Nilai ETag yang sebelumnya diterima dari server. Nilainya berupa string yang diapit tanda kutip dan harus merupakan validator kuat: ETag lemah yang berawalan W/ tidak diizinkan pada If-Range.

If-Range: "abc123"

HTTP-date

Stempel waktu Last-Modified dalam format tanggal HTTP standar. Server membandingkan tanggal ini dengan tanggal modifikasi sumber daya saat ini.

If-Range: Wed, 01 Jun 2022 08:00:00 GMT

Catatan

Header If-Range membawa salah satu dari ETag atau tanggal. Kedua bentuk tersebut tidak diperbolehkan hadir dalam permintaan yang sama.

Contoh

Sebuah klien sebelumnya telah mengunduh sebagian berkas besar dan menerima sebuah ETag pada respons awal. Untuk melanjutkan unduhan mulai dari byte 1048576, klien mengirimkan baik header Range maupun header If-Range dengan ETag yang tersimpan. Jika berkas tersebut tidak berubah, server merespons dengan 206 Partial Content.

GET /releases/archive.tar.gz HTTP/1.1
Host: cdn.example.re
Range: bytes=1048576-
If-Range: "a1b2c3d4e5"

Ketika sumber daya telah berubah sejak unduhan awal, ETag tidak lagi cocok. Server membuang Range tersebut dan merespons dengan berkas lengkap beserta status 200.

HTTP/1.1 200 OK
Content-Length: 52428800
ETag: "f6g7h8i9j0"

Validator berbasis tanggal bekerja dengan cara yang sama. Permintaan ini melanjutkan unduhan hanya jika berkas tersebut belum dimodifikasi sejak stempel waktu yang ditentukan.

GET /data/export.csv HTTP/1.1
Host: api.example.re
Range: bytes=524288-
If-Range: Sat, 15 Feb 2025 12:00:00 GMT