fix: /run/{name} → 302 redirect, bypass CF same-zone fetch limitation

CF Workers cannot fetch() other workers on the same .workers.dev zone.
This caused all /run/{name} routes to return Cloudflare's HTML 404
instead of proxying to the sub-worker.

Fix: replace inline fetch() proxy with a redirect-based approach:
- Default (browser/curl): 302 redirect to sub-worker URL
- Accept: application/json: return JSON with {url, capability, cold_start}

LRU bookkeeping (page-in, access count) still happens in Sigil before
the redirect, so cold capabilities are warmed up transparently.

New backend method: resolveInvoke() — same LRU/page-in logic as invoke()
but returns route info instead of executing the subrequest.

Fixes: https://sigil.shazhou.workers.dev/run/* returning CF 404
Reported-by: 小墨 🖊️
This commit is contained in:
2026-04-03 09:15:58 +00:00
parent fd210c0edd
commit 3709fae5e1
9 changed files with 954 additions and 641 deletions
+553 -632
View File
File diff suppressed because it is too large Load Diff