mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-02 18:18:35 +09:00
Docker and Coolify exports still reject a Form Resource on a sibling API host. The Node generator denies the entire registrable domain, so `webstudio-demo-john.stauferth.de` cannot submit to `cms.stauferth.de`. This follow-up will allow public sibling API hosts while keeping DNS address validation and stopping Resource requests that return to the same project through an alias. Ref #6623 ## Plan - [x] Reproduce the Node export rejection and add a failing regression test. - [x] Restrict the Node hostname deny rule to the site's known hosts. - [x] Mark outbound Node Resource requests and reject same-project reentry before page data loads. - [x] Verify public DNS pinning, redirects, other-project requests, and existing Cloudflare behavior. - [x] Review the Builder product docs for Node self-hosting and update them if needed. - [x] Run targeted tests, typechecks, lint, fixture generation, and required CI. All checks on `fb283ea4b6` passed, including the main workflow, visual regression, lint, submodules, and staging deploy. Expected production change: roughly 30–50 net lines across the generator, Node transport, and route templates. No new package, service, or user-facing error text. A CLI release and republish will be required to update existing exports. ## Verification - Reproduced the Node rejection for `cms.stauferth.de` from `webstudio-demo-john.stauferth.de`; the new generator test failed before the fix and passed after it. - SDK marker test failed without the marker assignment, then passed. Focused SDK tests: 27 passed. CLI prebuild: 144 passed. - SDK and CLI typechecks, SDK published types, root lint and package boundaries, fixture generation, Docker fixture typecheck and production build passed. - The built Docker fixture returned 508 for marked same-project GET and Form POST requests and 200 for another project's GET. - The Node connector still vets and pins public DNS answers on each hop. A reverse proxy must preserve the marker header for unknown-alias reentry detection. No live customer deployment was tested. - Actual source change: 59 net non-test lines, plus 268 generated fixture lines. Both legacy and React Router route templates need entry checks because Node exports lack a Worker entrypoint.