416 Range Not Satisfiable – Web 416

416

Lo stato HTTP 416 compare quando il server non può soddisfare l'intervallo richiesto nell'header Range, per esempio perché l'offset supera la dimensione attuale del file o perché il file è cambiato durante un download riprendibile. La risposta dovrebbe esporre Content-Range con la dimensione corrente. Il controllo principale confronta intervallo, ETag e lunghezza del file servito.

Cosa significa questo errore?

Lo stato HTTP 416 compare quando il server non può soddisfare l'intervallo richiesto nell'header Range, per esempio perché l'offset supera la dimensione attuale del file o perché il file è cambiato durante un download riprendibile. La risposta dovrebbe esporre Content-Range con la dimensione corrente. Il controllo principale confronta intervallo, ETag e lunghezza del file servito.

Messaggio originale

416 Range Not Satisfiable

Contesto e parole chiave

Alias

  • HTTP 416
  • Requested Range Not Satisfiable

Messaggi alternativi

  • Download riprendibile non valido
  • Intervallo di byte non soddisfacibile

Prodotti

  • HTTP range requests / web server / download client

Piattaforme

  • Linux
  • macOS
  • Windows

Parole chiave

  • errore 416
  • http download interrotto
  • range not satisfiable

Cause possibili

Intervallo oltre la fine della risorsa

Il client chiede byte che non esistono perché l'offset iniziale è maggiore o uguale alla dimensione attuale del file.

molto comune

File modificato tra due richieste parziali

Il client conserva un offset o un validator relativo a una versione precedente del file.

comune

Diagnosi

Header Range e Content-Range

Riprodurre la richiesta con curl e osservare lo status e gli header restituiti.

Come leggere il risultato. Content-Range: bytes */N indica la dimensione valida della risorsa quando l'intervallo non è soddisfacibile.

bash
curl -i -H 'Range: bytes=1000000-1000100' https://esempio.test/file.bin

Coerenza di ETag e file servito

Confrontare ETag, Last-Modified e dimensione tra la prima richiesta e il tentativo di ripresa.

Come leggere il risultato. Validator cambiati indicano che il download deve ripartire dalla risorsa completa.

Risoluzione

Ripartenza del download senza intervallo

Difficoltà: facileRischio: basso

Richiedere nuovamente la risorsa completa quando il file originale è cambiato o l'offset non è più valido.

  1. Eliminare il frammento locale incompleto.
  2. Ripetere la richiesta senza header Range.
  3. Conservare il nuovo ETag insieme al file scaricato.
  4. Abilitare la ripresa solo per la stessa versione della risorsa.

Correzione del gestore delle richieste parziali

Difficoltà: avanzataRischio: medioRichiede amministratore

Verificare che il server calcoli i limiti sul file corrente e restituisca Content-Range conforme.

  1. Controllare il calcolo di start ed end inclusivi.
  2. Rifiutare gli intervalli oltre la dimensione del file.
  3. Impostare Content-Range per il 416.
  4. Testare richieste 206, 416 e richiesta completa.

Domande frequenti

Perché un download ripreso restituisce 416 dopo che il file è stato aggiornato?

L'offset salvato appartiene alla versione precedente del file; il server confronta la dimensione corrente e non può restituire quel segmento.

Approfondimenti

Schede correlate