import { defineEventHandler, proxyRequest } from 'h3' export default defineEventHandler(async (event) => { const config = useRuntimeConfig() const targetBase = config.public.externalApiBaseUrl || 'http://10.10.123.135:8084/api/v1' // Extract path suffix after /stats-api const suffix = event.path.replace(/^\/stats-api/, '') const targetUrl = `${targetBase}${suffix}` // Clone request headers and overwrite Host/Origin/Referer with backend-whitelisted values const headers = { ...event.node.req.headers } as Record // Extract backend target host try { const urlObj = new URL(targetBase) headers.host = urlObj.host } catch (e) { headers.host = '10.10.123.135:8084' } // Spoof the origin and referer to match the server's trusted/whitelisted client origin headers.origin = 'http://10.10.150.175:3000' headers.referer = 'http://10.10.150.175:3000/' console.log(`[Proxy Stats-API] Forwarding ${event.node.req.method} to: ${targetUrl}`) console.log(`[Proxy Stats-API] Headers - Host: ${headers.host}, Origin: ${headers.origin}`) try { return await proxyRequest(event, targetUrl, { headers }) } catch (error: any) { console.error(`[Proxy Stats-API] Error forwarding to ${targetUrl}:`, error) throw error } })