diff --git a/packages/common/decorators/http/header.decorator.ts b/packages/common/decorators/http/header.decorator.ts index 316a58559ed..3aad45cc357 100644 --- a/packages/common/decorators/http/header.decorator.ts +++ b/packages/common/decorators/http/header.decorator.ts @@ -6,6 +6,7 @@ import { extendArrayMetadata } from '../../utils/extend-metadata.util'; * * For example: * `@Header('Cache-Control', 'none')` + * `@Header('Cache-Control', () => 'none')` * * @param name string to be used for header name * @param value string to be used for header value @@ -14,7 +15,7 @@ import { extendArrayMetadata } from '../../utils/extend-metadata.util'; * * @publicApi */ -export function Header(name: string, value: string): MethodDecorator { +export function Header(name: string, value: string | (() => string)): MethodDecorator { return ( target: object, key: string | symbol, diff --git a/packages/core/router/router-response-controller.ts b/packages/core/router/router-response-controller.ts index f9cd20890ba..a647afbe558 100644 --- a/packages/core/router/router-response-controller.ts +++ b/packages/core/router/router-response-controller.ts @@ -17,7 +17,7 @@ import { export interface CustomHeader { name: string; - value: string; + value: string | (() => string); } export interface RedirectResponse { @@ -84,7 +84,11 @@ export class RouterResponseController { headers: CustomHeader[], ) { headers.forEach(({ name, value }) => - this.applicationRef.setHeader(response, name, value), + this.applicationRef.setHeader( + response, + name, + typeof value === 'function' ? value() : value + ), ); }