From 1c0f290927854dc810e8efe77ae0d8ce54124c1c Mon Sep 17 00:00:00 2001 From: Seiya Nuta Date: Wed, 19 Oct 2022 13:18:34 +0900 Subject: [PATCH 1/3] docs: Describe how to override request headers in middleware --- docs/advanced-features/middleware.md | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/advanced-features/middleware.md b/docs/advanced-features/middleware.md index 24955cfa19365..4f16bc2c34c95 100644 --- a/docs/advanced-features/middleware.md +++ b/docs/advanced-features/middleware.md @@ -140,6 +140,7 @@ The [`NextResponse`](#nextresponse) API allows you to: - `redirect` the incoming request to a different URL - `rewrite` the response by displaying a given URL +- Set request headers - Set response cookies - Set response headers @@ -177,6 +178,37 @@ export function middleware(request: NextRequest) { } ``` +## Setting Headers + +You can set request and response headers using the `NextResponse` API. + +```ts +// middleware.ts + +import { NextResponse } from 'next/server' +import type { NextRequest } from 'next/server' + +export function middleware(request: NextRequest) { + // Clone the request headers and set a new header `x-hello-from-middleware1` + const requestHeaders = new Headers(request.headers) + requestHeaders.set('x-hello-from-middleware1', 'hello') + + // You can also set request headers in NextResponse.rewrite + const response = NextResponse.next({ + request: { + // New request headers + headers: requestHeaders, + }, + }) + + // Set a new response header `x-hello-from-middleware2` + response.headers.set('x-hello-from-middleware2', 'hello') + return response +} +``` + +> **Note:** Please avoid setting large headers as it might cause [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431) error depending on your backend web server configuration. + ## Related
From 3bb338665ce366ab7ee537a91deaba4dbfc021c6 Mon Sep 17 00:00:00 2001 From: Seiya Nuta Date: Wed, 19 Oct 2022 14:37:38 +0900 Subject: [PATCH 2/3] Elaborate little more --- docs/advanced-features/middleware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced-features/middleware.md b/docs/advanced-features/middleware.md index 4f16bc2c34c95..05df25ebaca38 100644 --- a/docs/advanced-features/middleware.md +++ b/docs/advanced-features/middleware.md @@ -140,7 +140,7 @@ The [`NextResponse`](#nextresponse) API allows you to: - `redirect` the incoming request to a different URL - `rewrite` the response by displaying a given URL -- Set request headers +- Set request headers for API Routes, `getServerSideProps`, and `rewrite` destinations - Set response cookies - Set response headers From 3f691530dcf160b30e077879d682e703a1e0a1cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Orb=C3=A1n?= Date: Wed, 19 Oct 2022 15:41:30 +0200 Subject: [PATCH 3/3] Update docs/advanced-features/middleware.md --- docs/advanced-features/middleware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/advanced-features/middleware.md b/docs/advanced-features/middleware.md index 05df25ebaca38..4e719de1a13b7 100644 --- a/docs/advanced-features/middleware.md +++ b/docs/advanced-features/middleware.md @@ -207,7 +207,7 @@ export function middleware(request: NextRequest) { } ``` -> **Note:** Please avoid setting large headers as it might cause [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431) error depending on your backend web server configuration. +> **Note:** Avoid setting large headers as it might cause [431 Request Header Fields Too Large](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431) error depending on your backend web server configuration. ## Related