Contenuto

    Risposta del server 416 Range Not Satisfiable

    HTTP Status Code 416 (Range Not Satisfiable)

    Il codice di stato HTTP 416 indica che il server non può soddisfare la richiesta di un intervallo di dati specificato dal client. Questo errore si verifica quando il client richiede una porzione di un file o di una risorsa, ma l'intervallo specificato supera i dati disponibili. Analizzeremo le cause di questo errore, forniremo esempi pratici e suggeriremo modi per correggere l'errore in vari linguaggi di programmazione.

    416 - Range Not Satisfiable

    Cause di Occorrenza del Codice di Stato 416

    • Intervallo Errato Specificato

      Il client può sbagliarsi nel definire l'intervallo, ad esempio, richiedendo un intervallo che supera la dimensione totale del file. Questo porta il server a non poter soddisfare la richiesta.

    • Assenza di Dati sul Server

      Se il file richiesto è stato eliminato o modificato e il nuovo file è più corto, la richiesta di un intervallo più lungo di quello disponibile genererà un errore 416.

    • Intestazioni Errate

      Un'impostazione errata delle intestazioni Range può portare a questo errore. Se l'intestazione non è formattata correttamente, il server non sarà in grado di interpretare la richiesta.

    Esempi Pratici

    1. Esempio con un File Audio

      Immagina che un client richieda un intervallo di byte da un file audio. Se il file audio è lungo 3000 byte e il client richiede i byte da 4000 a 5000, il server risponderà con un errore 416.

    2. Esempio con un'Immagine

      Se un client tenta di ottenere un intervallo di un'immagine che è stata ridimensionata, potrebbe non conoscere le nuove dimensioni e richiedere un intervallo che non esiste più, portando a un errore 416.

    3. Esempio con un File di Testo

      Se un client richiede i byte da 100 a 200 di un file di testo che è stato accorciato a 150 byte, riceverà un errore 416 poiché l'intervallo richiesto supera il file disponibile.

    Correzione dell'Errore 416 in Vari Linguaggi di Programmazione

    • Python (utilizzando la libreria requests)

      È possibile controllare la correttezza dell'intervallo prima di effettuare la richiesta. Ecco un esempio di codice:

      import requests
      
      url = "http://esempio.com/file.mp3"
      headers = {"Range": "bytes=4000-5000"}
      response = requests.get(url, headers=headers)
      
      if response.status_code == 416:
          print("Errore: intervallo non soddisfacente.")
    • JavaScript (utilizzando Fetch API)

      È possibile effettuare una richiesta per un intervallo e gestire la risposta 416 come segue:

      fetch("http://esempio.com/file.mp3", { headers: { "Range": "bytes=4000-5000" } })
          .then(response => {
              if (response.status === 416) {
                  console.log("Errore: intervallo non soddisfacente.");
              }
          });
    • PHP (utilizzando cURL)

      È possibile effettuare una richiesta con l'intestazione Range e gestire lo stato 416 in questo modo:

      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, "http://esempio.com/file.mp3");
      curl_setopt($ch, CURLOPT_HTTPHEADER, array("Range: bytes=4000-5000"));
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $response = curl_exec($ch);
      
      if(curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
          echo "Errore: intervallo non soddisfacente.";
      }
      curl_close($ch);

    Considerazioni Finali

    Il codice di stato 416 evidenzia problemi nella disponibilità dell'intervallo di dati richiesto. È importante specificare correttamente gli intervalli e gestire eventuali errori per garantire un'esperienza utente fluida e senza intoppi.

    Codice di Stato Descrizione
    416 Intervallo non soddisfacente
    200 Richiesta riuscita
    404 Risorsa non trovata