如何在AWS CDK CloudFront中为现有响应头策略添加Cache-Control头
问题解答
AWS CDK提供的预定义响应头策略(比如你用的CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT)是只读的系统策略,无法直接编辑修改。但你不用完全从零构建新策略,可以复用预定义策略的CORS配置,再额外添加Cache-Control指令,避免重复写所有默认配置。
以下是修改后的代码示例:
// 构建自定义响应头策略,包含原默认CORS配置 + Cache-Control const customResponseHeadersPolicy = new cloudfront.ResponseHeadersPolicy(this, 'CustomCorsCachePolicy', { corsBehavior: { accessControlAllowOrigins: ['*'], accessControlAllowMethods: ['GET', 'HEAD', 'OPTIONS'], accessControlAllowHeaders: ['*'], accessControlMaxAge: Duration.days(1), // 对应预定义策略的86400秒 accessControlExposeHeaders: ['ETag', 'Date'], originOverride: true, }, customHeadersBehavior: { customHeaders: [ { header: 'Cache-Control', value: 'public, max-age=3600', // 根据你的需求调整缓存时间 override: true, }, ], }, }); // 更新CloudFront分发配置,使用自定义策略 const cf = new cloudfront.Distribution(this, `cdn-${this.env}`, { defaultBehavior: { origin: new origins.S3Origin(this.cdnBucket), cachePolicy: custom_policy, allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS, originRequestPolicy: cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN, responseHeadersPolicy: customResponseHeadersPolicy, // 替换为自定义策略 }, domainNames: [domain], certificate, });
说明
corsBehavior部分完全复刻了CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT的默认配置,确保原有CORS规则不变customHeadersBehavior里新增了Cache-Control指令,override: true表示强制覆盖源站返回的缓存头(不需要覆盖可设为false)- 你可以根据实际需求调整
Cache-Control的max-age值,比如改成max-age=86400(1天)或其他时长
内容的提问来源于stack exchange,提问作者cesarpachon
相关产品推荐
相关产品推荐

