From 4ef839aba717cbe7dbdd0640556fe02bbab0e8a0 Mon Sep 17 00:00:00 2001 From: Bogdan Chadkin Date: Fri, 26 Jan 2024 16:12:32 +0300 Subject: [PATCH] fix: trim url for cloudflare worker (#2830) Fixes https://discord.com/channels/955905230107738152/1199803387005390858/1199803387005390858 Here fixed the issue with leading spaces in resource urls fail when fetch in workers. Trimmed urls and added validation for urls. --- .../app/builder/features/settings-panel/resource-panel.tsx | 5 +++++ packages/sdk/src/resource-loader.ts | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 &&