Respons server 416 Range Not Satisfiable
HTTP Status Code 416 (Range Not Satisfiable)
HTTP status code 416 menunjukkan bahwa server tidak dapat memenuhi permintaan rentang data yang diminta oleh klien. Kondisi ini terjadi ketika klien meminta bagian dari sumber daya, namun rentang yang ditentukan melebihi data yang tersedia. Dalam artikel ini, kita akan membahas penyebab munculnya kode status ini, contoh praktis, serta cara memperbaiki kesalahan pada berbagai bahasa pemrograman.
Penyebab Munculnya Kode Status 416
- Rentang yang Salah Ditentukan
Klien dapat melakukan kesalahan saat menentukan rentang, seperti meminta rentang yang melebihi ukuran file yang ada. Misalnya, jika file memiliki ukuran 1000 byte dan klien meminta byte 1001-2000, server tidak dapat memproses permintaan tersebut.
- Data Tidak Tersedia di Server
Situasi di mana sumber daya telah dihapus atau dimodifikasi dapat menyebabkan permintaan rentang lebih besar daripada data yang tersedia. Contohnya, jika file telah dihapus dan klien mencoba meminta bagian dari file tersebut.
- Header yang Salah
Pengaturan header
Range
yang tidak benar dapat menyebabkan kesalahan. Jika header tidak sesuai dengan format yang diharapkan, server tidak akan dapat memahami permintaan dengan benar.
Contoh Praktis
- Contoh dengan File Audio
Klien meminta rentang yang melebihi panjang audio. Misalnya, permintaan untuk rentang 1000-2000 byte pada file audio yang hanya memiliki panjang 1500 byte. Respons server akan menunjukkan status 416.
- Contoh dengan Gambar
Permintaan untuk bagian dari gambar yang telah diubah. Jika gambar telah diperkecil, klien yang tidak mengetahui ukuran baru akan meminta rentang yang tidak valid.
- Contoh dengan File Teks
Jika klien mengajukan permintaan untuk rentang 100-200 dari file teks yang hanya memiliki 150 byte, server akan mengembalikan respon dengan status 416.
Memperbaiki Kesalahan 416 pada Berbagai Bahasa Pemrograman
Python (Menggunakan Library Requests)
import requests
url = 'http://example.com/file.mp3'
headers = {'Range': 'bytes=1000-2000'}
response = requests.get(url, headers=headers)
if response.status_code == 416:
print("Rentang yang diminta tidak dapat dipenuhi.")
JavaScript (Menggunakan Fetch API)
fetch('http://example.com/file.mp3', {
method: 'GET',
headers: { 'Range': 'bytes=1000-2000' }
}).then(response => {
if (response.status === 416) {
console.log("Rentang yang diminta tidak dapat dipenuhi.");
}
});
PHP (Menggunakan cURL)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/file.txt");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: bytes=100-200"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
echo "Rentang yang diminta tidak dapat dipenuhi.";
}
curl_close($ch);
Penyebab | Keterangan |
---|---|
Rentang yang Salah Ditentukan | Klien meminta rentang di luar ukuran file yang ada. |
Data Tidak Tersedia | Sumber daya yang diminta telah dihapus atau diubah. |
Header yang Salah | Header Range yang tidak sesuai menyebabkan kesalahan. |
Kode status 416 mengindikasikan masalah dengan ketidaktersediaan rentang data yang diminta. Untuk menghindari status ini, penting untuk menentukan rentang dengan benar dan menangani kemungkinan kesalahan di sisi klien.