İçerikler

    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.

    416 - Range Not Satisfiable

    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

    1. 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.

    2. 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.

    3. 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.