# ResponseSecurityHeadersBehavior

Configuration for a set of security-related HTTP response headers.

CloudFront adds these headers to HTTP responses that it sends for requests that match a cache behavior
associated with this response headers policy.

- Source: [`aws-cloudfront/lib/response-headers-policy.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-cloudfront/lib/response-headers-policy.ts#L325)
- Type last changed: v2.1.0 · 8 Dec 2021

## Example

```ts
// Using an existing managed response headers policy
declare const bucketOrigin: origins.S3Origin;
new cloudfront.Distribution(this, 'myDistManagedPolicy', {
  defaultBehavior: {
    origin: bucketOrigin,
    responseHeadersPolicy: cloudfront.ResponseHeadersPolicy.CORS_ALLOW_ALL_ORIGINS,
  },
});

// Creating a custom response headers policy -- all parameters optional
const myResponseHeadersPolicy = new cloudfront.ResponseHeadersPolicy(this, 'ResponseHeadersPolicy', {
  responseHeadersPolicyName: 'MyPolicy',
  comment: 'A default policy',
  corsBehavior: {
    accessControlAllowCredentials: false,
    accessControlAllowHeaders: ['X-Custom-Header-1', 'X-Custom-Header-2'],
    accessControlAllowMethods: ['GET', 'POST'],
    accessControlAllowOrigins: ['*'],
    accessControlExposeHeaders: ['X-Custom-Header-1', 'X-Custom-Header-2'],
    accessControlMaxAge: Duration.seconds(600),
    originOverride: true,
  },
  customHeadersBehavior: {
    customHeaders: [
      { header: 'X-Amz-Date', value: 'some-value', override: true },
      { header: 'X-Amz-Security-Token', value: 'some-value', override: false },
    ],
  },
  securityHeadersBehavior: {
    contentSecurityPolicy: { contentSecurityPolicy: 'default-src https:;', override: true },
    contentTypeOptions: { override: true },
    frameOptions: { frameOption: cloudfront.HeadersFrameOption.DENY, override: true },
    referrerPolicy: { referrerPolicy: cloudfront.HeadersReferrerPolicy.NO_REFERRER, override: true },
    strictTransportSecurity: { accessControlMaxAge: Duration.seconds(600), includeSubdomains: true, override: true },
    xssProtection: { protection: true, modeBlock: false, reportUri: 'https://example.com/csp-report', override: true },
  },
  removeHeaders: ['Server'],
  serverTimingSamplingRate: 50,
});
new cloudfront.Distribution(this, 'myDistCustomPolicy', {
  defaultBehavior: {
    origin: bucketOrigin,
    responseHeadersPolicy: myResponseHeadersPolicy,
  },
});
```

## Properties

- `contentSecurityPolicy`: [ResponseHeadersContentSecurityPolicy](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersContentSecurityPolicy.html) — The policy directives and their values that CloudFront includes as values for the Content-Security-Policy HTTP response header.

  **Default:** no content security policy

- `contentTypeOptions`: [ResponseHeadersContentTypeOptions](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersContentTypeOptions.html) — Determines whether CloudFront includes the X-Content-Type-Options HTTP response header with its value set to nosniff.

  **Default:** no content type options

- `frameOptions`: [ResponseHeadersFrameOptions](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersFrameOptions.html) — Determines whether CloudFront includes the X-Frame-Options HTTP response header and the header’s value.

  **Default:** no frame options

- `referrerPolicy`: [ResponseHeadersReferrerPolicy](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersReferrerPolicy.html) — Determines whether CloudFront includes the Referrer-Policy HTTP response header and the header’s value.

  **Default:** no referrer policy

- `strictTransportSecurity`: [ResponseHeadersStrictTransportSecurity](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersStrictTransportSecurity.html) — Determines whether CloudFront includes the Strict-Transport-Security HTTP response header and the header’s value.

  **Default:** no strict transport security

- `xssProtection`: [ResponseHeadersXSSProtection](/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.ResponseHeadersXSSProtection.html) — Determines whether CloudFront includes the X-XSS-Protection HTTP response header and the header’s value.

  **Default:** no xss protection
