fix(cdn): stop stamping range-less GETs as 206 partial responses
env.BUCKET.get(key, { range: request.headers }) makes R2 report a
DEFINED object.range (full span) even when the request carried no Range
header, so every plain GET went out as 206 + Content-Range. Chrome
executes a 206 <script>; Firefox fires onload but refuses to EXECUTE
the script — on hosts with no masking edge cache (staging workers.dev)
the injected editor glue never ran: no [KICAD_STATUS] logs, heap 0MB,
'runtime did not initialize (no FS) in 90s' on every Firefox boot.
Prod's cdn.pcbjam.com zone cache normalizes cached hits to 200, which
is why only staging surfaced it; cold prod objects share the bug.
Pass the range option only when the request actually sent a Range.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PmR6goSk7JC17h7fkgGvHG
This commit is contained in:
parent
db84293af1
commit
42479b313c
1 changed files with 11 additions and 3 deletions
|
|
@ -41,9 +41,17 @@ export default {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const object = await env.BUCKET.get(key, {
|
// Only ask R2 for a range when the request actually sent one: passing the
|
||||||
range: request.headers,
|
// headers unconditionally makes R2 report a DEFINED object.range (full
|
||||||
});
|
// span) even for range-less GETs, which stamped EVERY response 206 +
|
||||||
|
// Content-Range. Chrome shrugs at a 206 <script>; Firefox fires onload but
|
||||||
|
// refuses to EXECUTE it, so on hosts with no masking edge cache (staging's
|
||||||
|
// workers.dev) the editor glue never ran — "runtime did not initialize
|
||||||
|
// (no FS) in 90s" on every Firefox boot.
|
||||||
|
const object = await env.BUCKET.get(
|
||||||
|
key,
|
||||||
|
request.headers.has("Range") ? { range: request.headers } : {},
|
||||||
|
);
|
||||||
if (!object) {
|
if (!object) {
|
||||||
return new Response("Not Found", { status: 404, headers: baseHeaders() });
|
return new Response("Not Found", { status: 404, headers: baseHeaders() });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue