HTTP
416 Range Not Satisfiable – Web 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 SatisfiableContesto 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 comuneFile modificato tra due richieste parziali
Il client conserva un offset o un validator relativo a una versione precedente del file.
comuneDiagnosi
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.
curl -i -H 'Range: bytes=1000000-1000100' https://esempio.test/file.binCoerenza 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
Richiedere nuovamente la risorsa completa quando il file originale è cambiato o l'offset non è più valido.
- Eliminare il frammento locale incompleto.
- Ripetere la richiesta senza header Range.
- Conservare il nuovo ETag insieme al file scaricato.
- Abilitare la ripresa solo per la stessa versione della risorsa.
Correzione del gestore delle richieste parziali
Verificare che il server calcoli i limiti sul file corrente e restituisca Content-Range conforme.
- Controllare il calcolo di start ed end inclusivi.
- Rifiutare gli intervalli oltre la dimensione del file.
- Impostare Content-Range per il 416.
- 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
- 416 Range Not Satisfiable - MDN Web Docs documentazione_tecnica
- HTTP range requests - MDN Web Docs documentazione_tecnica