【问题标题】:Setting HTTP Headers with Lambda@Edge使用 Lambda@Edge 设置 HTTP 标头
【发布时间】:2020-05-24 03:10:38
【问题描述】:

出于安全目的,我正在尝试在我的网站上添加一些新的 http 标头。该站点使用 Cloudfront 作为 CDN,我使用 Lamdba@Edge 在源响应上运行以下节点功能:

exports.handler = async (event, context) => {
    const response = event.Records[0].cf.response;
    const headers = response.headers;

//Set new headers 
 headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubdomains; preload'}]; 
 headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; 
 headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; 
 headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; 
 headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; 
 headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; 


    return response;
};

我正在向函数添加 CloudFront 触发器并成功重新部署 CDN(根据 AWS 控制台),但未根据需要将新标头添加到站点。我觉得我正在查看缓存站点,而不是最新的。在 CDN 添加新标头之前,我是否需要清空缓存或类似内容?

【问题讨论】:

    标签: amazon-web-services aws-lambda-edge


    【解决方案1】:

    如果有缓存,则不会附加这些标头。如果它们以后必须附加到缓存之外,请将其移动到查看器响应中。

    使缓存失效应该让这些显示出来,但它们会在之后被缓存

    【讨论】:

    • 我确实使用 /* 清除了 CDN 缓存,但它们仍然没有被添加。
    • 你能检查你的 Lambda 函数是否被调用?
    • 更新:NM - 我想我在清除后没有等待足够长的时间;他们现在正在工作。我仍然未能通过 Mozilla 天文台扫描,但我稍后会追踪它。谢谢
    • 很高兴它解决了您的问题
    猜你喜欢
    • 2017-08-28
    • 2018-12-17
    • 1970-01-01
    • 2021-06-29
    • 2016-03-22
    • 2016-12-27
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多