AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 820939
Accepted
chrisvdb
chrisvdb
Asked: 2016-12-16 08:21:30 +0800 CST2016-12-16 08:21:30 +0800 CST 2016-12-16 08:21:30 +0800 CST

来自 S3 源的 Amazon CloudFront 上的 HSTS

  • 772

是否可以从 S3 源在 Amazon CloudFront 分配上设置 HSTS 标头?

ssl amazon-cloudfront hsts
  • 5 5 个回答
  • 14749 Views

5 个回答

  • Voted
  1. Andrew Elmhorst
    2017-04-12T14:20:24+08:002017-04-12T14:20:24+08:00

    关于此的更新...

    现在可以通过 Lambda@edge 函数自定义 HTTP 响应标头。有关文档,请参阅http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html。要尝试此操作,请在 AWS 控制台中创建一个新的 lambda 函数。为语言选择“Edge Nodge.js 4.3”并查找 cloudfront-modify-response-header 模板。如果您这样做,Lambda 将询问您要将函数应用到哪个 CloudFront 分配和事件。请注意,您可以随时通过转到 Cloudfront 行为选项卡来编辑或更改此设置。

    这是一个示例 lambda 函数...

    'use strict';
    exports.handler = (event, context, callback) => {
    
        const response = event.Records[0].cf.response;
        response.headers['Strict-Transport-Security'] = 'max-age=2592000; includeSubDomains';
    
        callback(null, response);
    };
    
    • 13
  2. Best Answer
    Jason Martin
    2016-12-16T09:52:31+08:002016-12-16T09:52:31+08:00

    目前不可能,有关它的讨论,请参阅https://forums.aws.amazon.com/thread.jspa?threadID=162252。

    编辑:Lambda@Edge 使之成为可能,见下文。

    • 8
  3. Adam Maschek
    2017-07-19T05:26:23+08:002017-07-19T05:26:23+08:00

    添加到安德鲁的答案:

    我刚刚尝试过这个和一些注意事项:不再有特定的边缘 nodejs 运行时,但是需要在弗吉尼亚州北部地区创建 lambda 并由 cloudfront origin-response或viewer-response触发。

    开箱即用的代码似乎不再起作用。它给出了 ERR_CONTENT_DECORDING_FAILED。

    解决方案是使用json语法如下:

    response.headers['Strict-Transport-Security'] = [ { key: 'Strict-Transport-Security', value: "max-age=31536000; includeSubdomains; preload" } ];
    response.headers['X-Content-Type-Options']    = [ { key: 'X-Content-Type-Options', value: "nosniff" } ];
    
    • 5
  4. Cristian
    2021-11-03T14:03:53+08:002021-11-03T14:03:53+08:00

    关于这个的另一个更新......

    您现在可以在 CloudFront 中本地添加自定义 HTTP 响应标头(包括 CORS 和 HSTS 等安全标头),而无需修改您的源或编写函数。如果您转到控制台中的策略>响应标头,您可以使用您的配置创建可重用策略,然后将其附加到您希望添加这些标头的一个或多个缓存行为。这也可以通过 API、CLI、SDK 等获得。

    文档可在此处获得: https ://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/adding-response-headers.html

    • 3
  5. chrisvdb
    2017-07-19T10:38:14+08:002017-07-19T10:38:14+08:00

    正确,因为 Lambda@Edge 普遍可用,他们将其限制在弗吉尼亚北部,因此必须选择节点 6.10 而不是节点 4.3。

    下面我们代码的相关部分(出于我们的目的,这将始终是 302 永久重定向):

    'use strict';
    exports.handler = (event, context, callback) => {
    
      var request = event.Records[0].cf.request;
      const response = {
        status: '302',
        statusDescription: '302 Found',
        httpVersion: request.httpVersion,
        headers: {
          Location: [
            {
                "key":"Location",
                "value":"someURL"
            }
          ],
          'Strict-Transport-Security': [
            {
              "key":"Strict-Transport-Security",
              "value":'max-age=63072000; includeSubDomains; preload'
            }
          ],
        },
      };
      callback(null, response);
    };
    

    通过在 CloudFront 上配置不同的行为,您可以限制哪些请求将调用 Lambda 函数。

    • 1

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve