Zwracana jest tylko część zasobu.
Kiedy go używać
Odpowiedź na żądanie Range, np. przy streamingu wideo lub wznawianym pobieraniu.
Warto wiedzieć
Serwery wysyłają 206 tylko wtedy, gdy klient poprosi o to nagłówkiem Range, np. Range: bytes=0-1023, a serwer obsługuje zakresy, co ogłasza przez Accept-Ranges: bytes. Odpowiedź zawiera Content-Range: bytes 0-1023/146515 z całkowitym rozmiarem. Safari i iOS wymagają obsługi zakresów dla wideo: jeśli serwer ignoruje Range i zwraca 200, odtwarzanie MP4 często w ogóle nie działa.
Żądania wykraczające poza koniec pliku dostają 416. Kilka zakresów w jednym żądaniu wraca jako multipart/byteranges. Zakresy dotyczą zakodowanych bajtów, więc serwery zwykle nie kompresują multimediów gzipem. Za CDN-em sprawdź, czy częściowe żądania są poprawnie cache'owane i serwowane, a nie za każdym razem przekazywane do serwera źródłowego. Testuj przez curl -r 0-99 -i, a wznawianie pobierania przez curl -C - -O.
Sukces (2xx)
Kody 2xx oznaczają sukces: serwer odebrał, zrozumiał i przyjął żądanie.
Jak to wygląda
HTTP/1.1 206 Partial ContentJak go wysłać
| Node.js / Express | res.status(206).end() |
|---|---|
| Python / Flask | return '', 206 |
| nginx | return 206; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/