From 6d85bb58872a3c7ad146505dc7cf952c445d563a Mon Sep 17 00:00:00 2001 From: Michael Zetterberg Date: Mon, 20 May 2024 10:21:22 +0200 Subject: [PATCH] fix: passing headers --- middleware.ts | 8 -------- middlewares/cmsContent.ts | 16 +++++++++------- middlewares/myPages.ts | 4 +++- middlewares/utils.ts | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 middlewares/utils.ts diff --git a/middleware.ts b/middleware.ts index a838961e3..b21ef3a30 100644 --- a/middleware.ts +++ b/middleware.ts @@ -43,14 +43,6 @@ export const middleware: NextMiddleware = async (request, event) => { if (_continue) { continue } - - // We use x-lang as either Akamai or Netlify use x-language as the users preferred language - result?.headers.set("x-lang", lang) - result?.headers.set( - "x-pathname", - request.nextUrl.pathname.replace(`/${lang}`, "") - ) - result?.headers.set("x-url", request.nextUrl.href) return result } } diff --git a/middlewares/cmsContent.ts b/middlewares/cmsContent.ts index c93c51246..af4245ff7 100644 --- a/middlewares/cmsContent.ts +++ b/middlewares/cmsContent.ts @@ -1,3 +1,4 @@ +import { headers } from "next/headers" import { NextResponse } from "next/server" import { findLang } from "@/constants/languages" @@ -5,13 +6,15 @@ import { notFound } from "@/server/errors/next" import { resolve as resolveEntry } from "@/utils/entry" +import { getDefaultRequestHeaders } from "./utils" + import type { NextMiddleware } from "next/server" import { MiddlewareMatcher } from "@/types/middleware" export const middleware: NextMiddleware = async (request) => { const { nextUrl } = request - const lang = findLang(nextUrl.pathname) + const lang = findLang(nextUrl.pathname)! const pathNameWithoutLang = nextUrl.pathname.replace(`/${lang}`, "") const searchParams = new URLSearchParams(request.nextUrl.searchParams) @@ -24,6 +27,9 @@ export const middleware: NextMiddleware = async (request) => { ) } + const headers = getDefaultRequestHeaders(request) + headers.set("x-uid", uid) + const isCurrent = contentType ? contentType.indexOf("current") >= 0 : false if (request.nextUrl.pathname.includes("/preview")) { @@ -41,9 +47,7 @@ export const middleware: NextMiddleware = async (request) => { ), { request: { - headers: new Headers({ - "x-uid": uid, - }), + headers, }, } ) @@ -65,9 +69,7 @@ export const middleware: NextMiddleware = async (request) => { ), { request: { - headers: new Headers({ - "x-uid": uid, - }), + headers, }, } ) diff --git a/middlewares/myPages.ts b/middlewares/myPages.ts index a15ad07ba..6769488b9 100644 --- a/middlewares/myPages.ts +++ b/middlewares/myPages.ts @@ -7,6 +7,8 @@ import { internalServerError, notFound } from "@/server/errors/next" import { resolve as resolveEntry } from "@/utils/entry" +import { getDefaultRequestHeaders } from "./utils" + import type { NextMiddleware } from "next/server" import type { MiddlewareMatcher } from "@/types/middleware" @@ -39,7 +41,7 @@ export const middleware: NextMiddleware = async (request) => { ) } - const headers = new Headers(request.headers) + const headers = getDefaultRequestHeaders(request) headers.set("x-uid", uid) return NextResponse.next({ request: { diff --git a/middlewares/utils.ts b/middlewares/utils.ts new file mode 100644 index 000000000..209dbf5c8 --- /dev/null +++ b/middlewares/utils.ts @@ -0,0 +1,14 @@ +import { findLang } from "@/constants/languages" + +import type { NextRequest } from "next/server" + +export function getDefaultRequestHeaders(request: NextRequest) { + const lang = findLang(request.nextUrl.pathname)! + + const headers = new Headers(request.headers) + headers.set("x-lang", lang) + headers.set("x-pathname", request.nextUrl.pathname.replace(`/${lang}`, "")) + headers.set("x-url", request.nextUrl.href) + + return headers +}