File tree Expand file tree Collapse file tree 6 files changed +29
-2
lines changed Expand file tree Collapse file tree 6 files changed +29
-2
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ " @opennextjs/aws " : patch
3+ ---
4+
5+ Hides the x-opennext header from server requests when poweredByHeader is false in next config
Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ const nextConfig = {
5353 } ,
5454 ] ,
5555 trailingSlash : true ,
56+ poweredByHeader : true ,
5657} ;
5758
5859module . exports = nextConfig ;
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ import crypto from "node:crypto";
22import { OutgoingHttpHeaders } from "node:http" ;
33import { Readable } from "node:stream" ;
44
5- import { BuildId , HtmlPages } from "config/index.js" ;
5+ import { BuildId , HtmlPages , NextConfig } from "config/index.js" ;
66import type { IncomingMessage , StreamCreator } from "http/index.js" ;
77import { OpenNextNodeResponse } from "http/openNextResponse.js" ;
88import { parseHeaders } from "http/util.js" ;
@@ -322,7 +322,9 @@ export function fixSWRCacheHeader(headers: OutgoingHttpHeaders) {
322322 * @__PURE__
323323 */
324324export function addOpenNextHeader ( headers : OutgoingHttpHeaders ) {
325- headers [ "X-OpenNext" ] = "1" ;
325+ if ( NextConfig . poweredByHeader ) {
326+ headers [ "X-OpenNext" ] = "1" ;
327+ }
326328 if ( globalThis . openNextDebug ) {
327329 headers [ "X-OpenNext-Version" ] = globalThis . openNextVersion ;
328330 headers [ "X-OpenNext-RequestId" ] = globalThis . __als . getStore ( ) ?. requestId ;
Original file line number Diff line number Diff line change @@ -75,6 +75,7 @@ export interface NextConfig {
7575 appDir ?: boolean ;
7676 } ;
7777 images : ImageConfig ;
78+ poweredByHeader ?: boolean ;
7879}
7980
8081export interface RouteDefinition {
Original file line number Diff line number Diff line change @@ -20,4 +20,8 @@ test("Headers", async ({ page }) => {
2020 // Request header should be available in RSC
2121 let el = page . getByText ( `request-header` ) ;
2222 await expect ( el ) . toBeVisible ( ) ;
23+
24+ // Both these headers should not be present cause poweredByHeader is false in appRouter
25+ expect ( headers [ "x-powered-by" ] ) . toBeFalsy ( ) ;
26+ expect ( headers [ "x-opennext" ] ) . toBeFalsy ( ) ;
2327} ) ;
Original file line number Diff line number Diff line change 1+ import { expect , test } from "@playwright/test" ;
2+
3+ test ( "should test if poweredByHeader adds the correct headers " , async ( {
4+ page,
5+ } ) => {
6+ const result = await page . goto ( "/" ) ;
7+ expect ( result ) . toBeDefined ( ) ;
8+ expect ( result ?. status ( ) ) . toBe ( 200 ) ;
9+ const headers = result ?. headers ( ) ;
10+
11+ // Both these headers should be present cause poweredByHeader is true in pagesRouter
12+ expect ( headers ?. [ "x-powered-by" ] ) . toBe ( "Next.js" ) ;
13+ expect ( headers ?. [ "x-opennext" ] ) . toBe ( "1" ) ;
14+ } ) ;
You can’t perform that action at this time.
0 commit comments