From 24eea9a2fe5f4b1eca8190e1082e4e9334b1a034 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 6 Feb 2026 12:22:32 +0100 Subject: [PATCH] fix(middleware): resolve 0.0.0.0 hydration issues and add header logging --- middleware.ts | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/middleware.ts b/middleware.ts index b7f6450c..6e423e74 100644 --- a/middleware.ts +++ b/middleware.ts @@ -1,6 +1,5 @@ import createMiddleware from 'next-intl/middleware'; -import { NextResponse } from 'next/server'; -import type { NextRequest } from 'next/server'; +import { NextResponse, NextRequest } from 'next/server'; // Create the internationalization middleware const intlMiddleware = createMiddleware({ @@ -11,23 +10,43 @@ const intlMiddleware = createMiddleware({ defaultLocale: 'en', }); -// Main middleware that logs all requests export default function middleware(request: NextRequest) { - const startTime = Date.now(); const { method, url, headers } = request; - const userAgent = headers.get('user-agent') || 'unknown'; - const referer = headers.get('referer') || 'none'; - const ip = headers.get('x-forwarded-for') || headers.get('x-real-ip') || 'unknown'; - // Log incoming request - console.log(`Incoming request: method=${method} host=${headers.get('host')} url=${url}`); + // Build header object for logging + const headerObj: Record = {}; + headers.forEach((value, key) => { + headerObj[key] = value; + }); + + // Defensive URL correction + // If the URL contains 0.0.0.0 (internal IP), we rebuild it using the Host header + let effectiveRequest = request; + if (url.includes('0.0.0.0')) { + const proto = headers.get('x-forwarded-proto') || 'https'; + const host = headers.get('host') || 'testing.klz-cables.com'; + const newUrl = new URL(url); + newUrl.protocol = proto; + newUrl.host = host; + effectiveRequest = new NextRequest(newUrl, { + headers: request.headers, + method: request.method, + body: request.body, + }); + console.log( + `Replaced 0.0.0.0 URL with: ${newUrl.toString()} | Original Host: ${headers.get('host')} | Headers: ${JSON.stringify(headerObj)}`, + ); + } try { // Apply internationalization middleware - const response = intlMiddleware(request); + const response = intlMiddleware(effectiveRequest); return response; } catch (error) { - console.error(`Request failed: method=${method} url=${url}`, error); + console.error( + `Request failed: method=${method} url=${url} headers=${JSON.stringify(headerObj)}`, + error, + ); throw error; } }