diff --git a/apps/builder/app/builder/features/settings-panel/resource-panel.tsx b/apps/builder/app/builder/features/settings-panel/resource-panel.tsx index b8bd2bb0a0..e8558488df 100644 --- a/apps/builder/app/builder/features/settings-panel/resource-panel.tsx +++ b/apps/builder/app/builder/features/settings-panel/resource-panel.tsx @@ -309,6 +309,11 @@ export const ResourceForm = forwardRef< if (evaluatedValue.length === 0) { return "URL is required"; } + try { + new URL(evaluatedValue); + } catch { + return "URL is invalid"; + } }, }); const [method, setMethod] = useState( diff --git a/packages/sdk/src/resource-loader.ts b/packages/sdk/src/resource-loader.ts index c08f1d41c9..c9496062aa 100644 --- a/packages/sdk/src/resource-loader.ts +++ b/packages/sdk/src/resource-loader.ts @@ -13,7 +13,9 @@ export const loadResource = async (resourceData: Resource) => { requestInit.body = body; } try { - const response = await fetch(url, requestInit); + // cloudflare workers fail when fetching url contains spaces + // even though new URL suppose to trim them on parsing by spec + const response = await fetch(url.trim(), requestInit); let data; if ( response.ok &&