diff --git a/.changeset/bright-scissors-grow.md b/.changeset/bright-scissors-grow.md
new file mode 100644
index 000000000000..f2cd51db71ae
--- /dev/null
+++ b/.changeset/bright-scissors-grow.md
@@ -0,0 +1,5 @@
+---
+'@sveltejs/kit': patch
+---
+
+fix: avoid overwriting headers for sub-requests made while loading the error page
diff --git a/packages/kit/src/runtime/server/respond.js b/packages/kit/src/runtime/server/respond.js
index ab51505a897c..5f5ae7b795e4 100644
--- a/packages/kit/src/runtime/server/respond.js
+++ b/packages/kit/src/runtime/server/respond.js
@@ -508,11 +508,11 @@ export async function respond(request, options, manifest, state) {
 			}
 
 			if (state.error && event.isSubRequest) {
-				return await fetch(request, {
-					headers: {
-						'x-sveltekit-error': 'true'
-					}
-				});
+				// avoid overwriting the headers. This could be a same origin fetch request
+				// to an external service from the root layout while rendering an error page
+				const headers = new Headers(request.headers);
+				headers.set('x-sveltekit-error', 'true');
+				return await fetch(request, { headers });
 			}
 
 			if (state.error) {