From b39a4d59718235d47e7a57cc368ac5ddd3491e7b Mon Sep 17 00:00:00 2001 From: Ethan Arrowood Date: Mon, 18 Mar 2024 14:45:33 -0600 Subject: [PATCH] fix `x-forwarded-port` header (#63303) Follow up to https://github.com/vercel/next.js/issues/61133 that will rely on `x-forwarded-proto` value if it exists in order to default the `x-forwarded-port` value. Closes NEXT-2820 --- packages/next/src/server/base-server.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/next/src/server/base-server.ts b/packages/next/src/server/base-server.ts index 55dff6a81e973..e9a8461835fa0 100644 --- a/packages/next/src/server/base-server.ts +++ b/packages/next/src/server/base-server.ts @@ -889,7 +889,11 @@ export default abstract class Server { } const { originalRequest } = req as NodeNextRequest - const isHttps = !!(originalRequest?.socket as TLSSocket)?.encrypted + const xForwardedProto = originalRequest?.headers['x-forwarded-proto'] + const isHttps = xForwardedProto + ? xForwardedProto === 'https' + : !!(originalRequest?.socket as TLSSocket)?.encrypted + req.headers['x-forwarded-host'] ??= req.headers['host'] ?? this.hostname req.headers['x-forwarded-port'] ??= this.port ? this.port.toString()