Sunucu yanıtı 416 Range Not Satisfiable
HTTP Durum Kodu 416 (Range Not Satisfiable)
HTTP durum kodu 416, sunucunun istemciden gelen veri aralığı isteğini yerine getiremeyeceği anlamına gelir. İstemci, bir kaynağın yalnızca belirli bir kısmını talep ettiğinde, ancak belirtilen aralık mevcut verilerin sınırlarını aşıyorsa bu durum ortaya çıkar. Aşağıda, bu durum kodunun nedenleri, pratik örnekleri ve çeşitli programlama dilleri kullanarak hataların nasıl giderileceği ele alınacaktır.
Nedenler
- Yanlış Belirtilen Aralık:
İstemci, dosyanın boyutunu aşan bir aralık talep edebilir. Örneğin, bir video dosyasının uzunluğu 100 saniye ise, istemcinin 150-200 saniyeleri talep etmesi durumunda 416 hatası alınır.
- Sunucuda Veri Olmaması:
Kaynağın silinmesi veya değiştirilmesi, istemcinin talep ettiği aralığın mevcut verilerden daha büyük olmasına neden olabilir. Bu durumda, sunucu istemciye 416 kodunu geri döner.
- Yanlış Başlıklar:
Range başlıkları yanlış ayarlandığında da hata meydana gelebilir. Örneğin, istemcinin gönderdiği Range başlığında bir yazım hatası varsa, sunucu bu isteği karşılayamayabilir.
Pratik Örnekler
- Ses Dosyası Örneği:
Bir istemci, bir ses dosyasının 0-120 saniyelerini talep ediyor, ancak dosya yalnızca 80 saniye uzunluğunda. Sunucu, 416 koduyla birlikte hata mesajı döner.
- Görüntü Örneği:
Bir istemci, boyutu değiştirilmiş bir görüntünün belirli bir aralığını talep ediyor. Ancak, istemci yeni boyutları bilmediği için yanlış bir aralık göndermiştir.
- Metin Dosyası Örneği:
Bir istemci, 0-5000 baytlık bir metin dosyası talep ediyor. Ancak dosya yalnızca 3000 bayt içeriyor ve sunucu 416 hatası döner.
Hatanın Giderilmesi
Farklı programlama dillerinde 416 hatasının nasıl giderileceği ile ilgili örnekler aşağıda verilmiştir.
Dil | Örnek Kod | Açıklama |
---|---|---|
Python |
import requests url = 'http://example.com/file.mp3' headers = {'Range': 'bytes=0-79'} response = requests.get(url, headers=headers) if response.status_code == 416: print("İstenilen aralık mevcut değil.") |
Aralığın geçerliliğini kontrol etmeden isteği gönderir. |
JavaScript |
fetch('http://example.com/file.mp3', { headers: { 'Range': 'bytes=0-79' } }) .then(response => { if (response.status === 416) { console.log('İstenilen aralık mevcut değil.'); } }); |
Fetch API kullanarak isteği gönderir ve 416 hatasını kontrol eder. |
PHP |
$ch = curl_init('http://example.com/file.mp3'); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Range: bytes=0-79')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) { echo "İstenilen aralık mevcut değil."; } curl_close($ch); |
cURL ile istek gönderir ve 416 hatasını işler. |
HTTP durum kodu 416, istenen veri aralığının mevcut olmadığını gösterir. Bu hatadan kaçınmak için aralıkların doğru bir şekilde belirlenmesi ve istemci tarafında olası hataların işlenmesi önemlidir.