リソースの一部だけが返されます。
使いどころ
Range リクエストへの応答。動画のストリーミングや再開可能なダウンロードで使われます。
知っておきたいこと
サーバーが 206 を返すのは、クライアントが Range: bytes=0-1023 のような Range ヘッダーで要求し、かつサーバーが範囲リクエストに対応している(Accept-Ranges: bytes で通知)場合だけです。レスポンスには、全体のサイズを含む Content-Range: bytes 0-1023/146515 が付きます。Safari と iOS は動画に範囲リクエストへの対応を求めます。サーバーが Range を無視して 200 を返すと、MP4 がまったく再生できないことがよくあります。
ファイルの末尾を超えるリクエストには 416 が返ります。1 つのリクエストで複数の範囲を指定すると、multipart/byteranges として返ってきます。範囲はエンコード後のバイトに適用されるため、サーバーは通常メディアには gzip を使いません。CDN の背後では、部分リクエストが毎回オリジンに転送されるのではなく、正しくキャッシュされて配信されているかを確認してください。テストには curl -r 0-99 -i を、再開可能なダウンロードには curl -C - -O を使います。
成功 (2xx)
2xx は成功を表します。サーバーがリクエストを受け取り、理解し、受け入れました。
レスポンスでの表示
HTTP/1.1 206 Partial Content返し方
| Node.js / Express | res.status(206).end() |
|---|---|
| Python / Flask | return '', 206 |
| nginx | return 206; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/