diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index 10291f2369849..320f63ef5a2e2 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -43,6 +43,14 @@ export interface ApplicationLoadBalancerProps extends BaseLoadBalancerProps { * @default 60 */ readonly idleTimeout?: Duration; + + /** + * Indicates whether HTTP headers with invalid header fields are removed + * by the load balancer (true) or routed to targets (false) + * + * @default false + */ + readonly dropInvalidHeaderFields?: boolean; } /** @@ -100,6 +108,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic if (props.http2Enabled === false) { this.setAttribute('routing.http2.enabled', 'false'); } if (props.idleTimeout !== undefined) { this.setAttribute('idle_timeout.timeout_seconds', props.idleTimeout.toSeconds().toString()); } + if (props.dropInvalidHeaderFields) {this.setAttribute('routing.http.drop_invalid_header_fields.enabled', 'true'); } } /** diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts index 61c8dc470545f..38e3ef46eea0b 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/load-balancer.test.ts @@ -81,6 +81,7 @@ describe('tests', () => { deletionProtection: true, http2Enabled: false, idleTimeout: cdk.Duration.seconds(1000), + dropInvalidHeaderFields: true, }); // THEN @@ -98,6 +99,10 @@ describe('tests', () => { Key: 'idle_timeout.timeout_seconds', Value: '1000', }, + { + Key: 'routing.http.drop_invalid_header_fields.enabled', + Value: 'true', + }, ], }); });