From 8bdd2f8cc085118967061a425f32c7dcc3ad7a00 Mon Sep 17 00:00:00 2001 From: Jacob Ebey Date: Tue, 17 May 2022 13:43:48 -0700 Subject: [PATCH] fix: change how request is "cloned" for loaders (#3218) * fix: change how request is "cloned" for loaders * removed derrived properties from init --- .../__tests__/handler-test.ts | 30 +++++++++++++++++++ packages/remix-server-runtime/server.ts | 5 +++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 packages/remix-server-runtime/__tests__/handler-test.ts diff --git a/packages/remix-server-runtime/__tests__/handler-test.ts b/packages/remix-server-runtime/__tests__/handler-test.ts new file mode 100644 index 00000000000..fd19fb4556a --- /dev/null +++ b/packages/remix-server-runtime/__tests__/handler-test.ts @@ -0,0 +1,30 @@ +import { json } from "../responses"; +import { createRequestHandler } from "../server"; + +describe("createRequestHandler", () => { + it("retains request headers when stripping body off for loaders", async () => { + let handler = createRequestHandler({ + routes: { + root: { + id: "routes/test", + path: "/test", + module: { + loader: ({ request }) => json(request.headers.get("X-Foo")), + } as any, + }, + }, + assets: {} as any, + entry: { module: {} as any }, + }); + + let response = await handler( + new Request("http://.../test", { + headers: { + "X-Foo": "bar", + }, + }) + ); + + expect(await response.json()).toBe("bar"); + }); +}); diff --git a/packages/remix-server-runtime/server.ts b/packages/remix-server-runtime/server.ts index aa6dc89a057..c785fab83f9 100644 --- a/packages/remix-server-runtime/server.ts +++ b/packages/remix-server-runtime/server.ts @@ -294,8 +294,11 @@ async function handleDocumentRequest({ } let loaderRequest = new Request(request.url, { - ...request, body: null, + headers: request.headers, + method: request.method, + redirect: request.redirect, + signal: request.signal, }); let routeLoaderResults = await Promise.allSettled(