From 04f78876dfbe826514fe3e9cd84eaf99b55f38b9 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Tue, 11 Oct 2022 21:41:10 +0100 Subject: [PATCH] feat: https redirection according to cf-visitor and x-forwarded-proto --- src/middleware.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/middleware.ts b/src/middleware.ts index fc7d0fe1..ad68c15b 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -15,6 +15,30 @@ const ALWAYS_REPLAY_ROUTES = [ export default async function middleware(req: NextRequest) { const { pathname } = req.nextUrl + console.log( + `x-forwarded-proto: ${req.headers.get( + "x-forwarded-proto", + )}, cf-visitor: ${req.headers.get("cf-visitor")}`, + ) + if (IS_PROD && req.headers.get("x-forwarded-proto") !== "https") { + let cfHttps = false + try { + if ( + JSON.parse(req.headers.get("cf-visitor") || "{}").scheme === "https" + ) { + cfHttps = true + } + } catch (error) {} + if (!cfHttps) { + return NextResponse.redirect( + `https://${req.headers.get("host")}${req.nextUrl.pathname}${ + req.nextUrl.search + }`, + 301, + ) + } + } + console.log(`${req.method} ${req.nextUrl.pathname}${req.nextUrl.search}`) if (