From 90e56b7dde0ed9fea6e906f8c3bfb471d563a5d5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 14 May 2026 17:12:58 +0800 Subject: [PATCH] fix: bypass proxy for same-origin 3d assets --- lib/canvas/three-asset-url.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/canvas/three-asset-url.ts b/lib/canvas/three-asset-url.ts index 509e33d53..706584caa 100644 --- a/lib/canvas/three-asset-url.ts +++ b/lib/canvas/three-asset-url.ts @@ -16,12 +16,27 @@ const PROXY_HOST_KEYWORDS = [ "cloudfront.net", ]; +function isSameOriginBrowserAssetUrl(raw: string) { + if (typeof window === "undefined") return false; + + try { + const parsed = new URL(raw, window.location.origin); + return parsed.origin === window.location.origin; + } catch { + return false; + } +} + export function shouldProxyThreeAssetUrl(value?: string | null) { const raw = String(value || "").trim(); if (!raw || raw.startsWith("/") || raw.startsWith("blob:") || raw.startsWith("data:")) { return false; } + if (isSameOriginBrowserAssetUrl(raw)) { + return false; + } + try { const parsed = new URL(raw); if (parsed.protocol !== "https:" && parsed.protocol !== "http:") return false;