HTTP Rangeヘッダー計算
送る前にバイト範囲を確認できます。10000バイトのファイルで0-499は先頭の500バイトを指し、満たせる範囲なので206 Partial Contentとbytes 0-499/10000の行になります。末尾が開いた形や最後の数バイトの形も使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 計算モード
- Parse
- Rangeヘッダー
- bytes=0-499
- リソースサイズ
- 10,000
- 範囲の数
- 1 bytes
- ステータスのヒント
- 206
- 要求バイト数
- 500
- コンテンツ範囲 (Content-Range)
- bytes 0-499/10000
手書きでbytes=開始-終了を書くのは簡単に見えますが、サフィックス形式、開区間、マルチパート集合、実ファイルサイズと一致するContent-Range行が必要になると途端に難しくなります。検証失敗は課金されません。
Rangeヘッダーの意味と使える形式
RFC 9110では一般的な単位はbytesであり、等号の後はカンマ区切りの範囲指定集合です。開いた範囲 開始- は、そのオフセットから現在の表現の最終バイトまでを意味します。サフィックス範囲 -N は末尾Nバイトを意味し、残り量は分かるが絶対オフセットが分からないときにダウンロードマネージャーが使う形です。
本計算機は完全なRange行または 単位=範囲 形式を受け付け、単位を小文字のbytesに正規化し、任意の空白を除去し、bytes以外の単位を拒否します。疎な読み取りを独自のミニ言語なしで表現できるよう、マルチパート集合は最大三十二部分まで許可します。
開区間はサイズマイナス1で閉じ、サフィックスは末尾窓になり、ファイル末尾を超えて始まる閉じた範囲は充足不可とマークされます。そうでなければ416 Range Not Satisfiableとなり、Content-Rangeはbytes アスタリスク スラッシュ サイズとなり、丁寧なオリジンが誤った再開に返す応答と一致します。
活用例
中断されたダウンロードの再開
既知のファイルサイズに対してbytes=開始-範囲を構築または解析し、クライアントが前の転送が止まった位置から、重複や隙間なく正確に再開できるようにします。
メディアシークと部分読み取り
動画・音声のスクラビング用に閉じた/開いたRangeヘッダーを計算し、オリジンまたはCDNへ要求を出す前に206と416を確認します。
よくある質問
0-499という範囲は何を指しますか?
先頭の500バイトです。閉じた範囲は両端を含むので、0-499はバイト0からバイト499までです。終わりを含めないと考えると、最後の1バイトが抜けてしまいます。
ファイルの最後の部分だけを求めるには?
マイナス記号に数を続ける末尾の形を使います。たとえば-500は最後の500バイトです。残りの量は分かっていても開始位置が分からないとき、ダウンロード管理ソフトがこの形を使います。
範囲が満たせないのはどんなときですか?
ファイルの終わりより後ろから始まるときです。サイズを指定していれば、その範囲は満たせないと判定され、416と、実際のサイズを示す行が返る想定になります。
1つのヘッダーにいくつの範囲を入れられますか?
コンマで区切って32個までです。ファイルの離れた部分をまとめて求められます。単位はバイトだけが使え、それ以外の単位は受け付けません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/http-range-header \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"parse"}'const res = await fetch("https://api.kit.forhosting.com/dev/http-range-header", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "parse"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/http-range-header",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "parse"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/http-range-header", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"parse"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"parse"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/http-range-header", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"mode": "parse"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.http_range_header",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
部分ダウンロード、動画シーク、中断後の再開はいずれもHTTP Rangeリクエストヘッダーに依存します。このHTTP Rangeヘッダー計算ツールは、解析用のRange値、または構築用の開始・終了・サフィックス各フィールドを受け取り、長さ付きの構造化範囲、リソースサイズに対する充足可否、206または416のstatus_hint、単一の充足可能範囲が分かる場合のContent-Range文字列を返します。ヘッダー確認だけのために完全なHTTPスタックを立てず、決定的なバイト演算が必要なときにご利用ください。
HTTP Rangeヘッダーの意味と本ツールが受け付ける形式
HTTP Rangeリクエストは、クライアントが表現全体ではなくどのバイト区間を欲しいかをサーバーに伝えます。閉じた範囲 開始-終了 は両端を含み、bytes=0-499 は先頭の五百バイトを要求します。resource_sizeを指定すると、各指定は絶対的な開始・終了オフセットに解決されます。解決されたすべての範囲が充足可能でリソースが空でないとき、status_hintは206 Partial Contentです。
入力契約、buildとparse、応答フィールド
modeをparseまたはbuildに設定してください。parseモードではrange_headerが必須で、bytes=0-499、Range: bytes=500-、マルチパート bytes=0-0,-1 のような形を取り得ます。buildモードでは末尾N形式のsuffix_length、または閉じた/開いた形式のためのstartと任意の包括的endを指定し、suffix_lengthをstartやendと混在させないでください。resource_sizeは両モードで任意です。構文正規化と閉じた範囲の長さだけなら省略し、satisfiableフラグ、実ファイルに対するbytes_requested、content_range、status_hintが必要なら含めてください。整数は非負の安全な整数で、suffix_lengthは少なくとも1である必要があります。成功時の本体には常にmode、正規化されたrange_header、unit bytes、range_count、ranges配列が含まれます。各範囲オブジェクトはkind(closed、open_end、suffix)、raw文字列、既知の場合はstart、end、length、suffix、satisfiableを持ちます。トップレベルのbytes_requestedは、すべての長さが既知のときの解決済み長さの合計です。content_rangeは単一の充足可能範囲についてbytes 開始-終了 スラッシュ サイズとして、充足不可のときはbytes アスタリスク スラッシュ サイズとして出力されます。無効なヘッダー、不正なmode、矛盾するフィールド組み合わせはinvalid_inputで失敗し課金されません。例: resource_sizeが一万のときbytes=0-499を解析すると長さ五百、content_range bytes 0-499/10000、status_hint 206となります。
HTTP Range計算機が真価を発揮する場面
ダウンロードマネージャーやインストーラはネットワーク切断後にRangeヘッダーを再送して大きな成果物を再開します。共有の計算機は、ISO全体を再取得したりPDFの重要ページを飛ばしたりするオフバイワンを防ぎます。プログレッシブMP4や音声をシークするメディアプレーヤーは開いた/閉じた範囲を組み立て、スクラバーを描く前にオリジンが206か416かを知る必要があります。APIゲートウェイとCDN設定のテストは、既知のオブジェクトサイズに対してエッジ規則が範囲を正しく転送・クランプすることを、フルオリジンを起動せずに検証します。SDK作者は同じ純粋関数を単体テストに埋め込み、言語をまたいでクライアントとサーバーのフィクスチャを揃えます。実装は純粋parseのティアAのため、成功した呼び出しはすべて公開の基本料金$0.002で、モデルトークンも外向きネットワークもありません。resource_sizeを正直に保ち、構造化範囲をテストに固定すれば、バイトを数えるためだけに完全なスタックを届けなくても、エッジワーカー、CLI、教室のHTTP実験向けに再現可能な再開演算が得られます。
連携の活用例
ゲートウェイとSDKのテストフィクスチャ
自動テストで正規のRangeとContent-Range文字列を生成し、エッジ規則とクライアントライブラリがマルチパートおよびサフィックス形式で一致するようにします。
技術的な質問
HTTP Rangeヘッダー計算ツールはどのRange形式をサポートしますか?
単位はbytesのみです。閉じた開始-終了、開いた開始-、サフィックス -N、および最大32部分までのカンマ区切りマルチパート集合を受け付けます。他の単位は拒否されます。
末尾NバイトのRangeはどのように構築しますか?
modeをbuildにし、suffix_length(例: 500)を渡してbytes=-500を出力します。suffix_lengthと同時にstartやendを送らないでください。
status_hintが206になる場合と416になる場合は?
resource_sizeがあり、空でないリソース上で解決されたすべての範囲が充足可能ならstatus_hintは206です。リソースが空、またはいずれかの範囲が末尾を超えて始まる場合は416です。
ヘッダー解析にresource_sizeは必要ですか?
不要です。resource_sizeがなくても正規化済みrange_header、kind、閉じた範囲の長さは得られます。開区間とサフィックスは絶対オフセットと合計bytes_requestedの解決にサイズが必要です。
HTTP Rangeヘッダー計算ツールの料金は?
ブラウザツールは無料です。APIリクエストは成功した呼び出しごとにプリペイドKIT残高から$0.002です。無効な入力は課金されません。