如何使用 CloudFront 配置 HSTS 重定向先决条件?

如何使用 CloudFront 配置 HSTS 重定向先决条件?

HSTS 预加载列表提交网站具有非常具体的先决条件,不允许将协议更改和重定向合并为一个步骤(典型示例 - 将请求http://example.com直接重定向到https://www.example.com无法通过测试 - 必须先将协议升级到 HTTPS,然后才能在独立步骤中添加“www”子域)。托管在 Amazon CloudFront 上的网站是否可以满足这些规则?

A相关问题在这里,关于发送必要的标题,但我已经测试过该部分并可以正常工作。我的问题是重定向,对于使用 www 子域的网站。

我已将 CloudFront 配置为在默认行为下“将 HTTP 重定向到 HTTPS”,并且这对所有 HTTP 请求都有效,但是请求https://example.com首先重定向到降级协议,http://www.example.com然后再升级到 HTTPS,这就是我遇到的问题。我需要以不同的方式处理二级域的 HTTP 和 HTTPS 请求。

为了清楚起见,这里是我想要实现的重定向模式:

http://example.com > https://example.com > https://www.example.com
http://www.example.com > https://www.example.com
https://example.com > https://www.example.com
https://www.example.com

以下是 CloudFront 现在正在做的事情,第三行(协议降级)导致 HSTS Preload 提交失败:

http://example.com > https://example.com > https://www.example.com
http://www.example.com > https://www.example.com
https://example.com > http://www.example.com > https://www.example.com
https://www.example.com

答案1

我怀疑你可能忽略了在将重定向目标协议更改为 https 后清除 CloudFront 缓存的需要,因为描述的配置(在注释中)应该按预期工作 - 在重定向存储桶的配置中将“协议”设置为“https”应该不是做这个:

https://example.com > http://www.example.com > https://www.example.com

创建一个CloudFront 失效请求使用模式/*。一旦 invalidarion 请求完成,如控制台中所示,请再次测试。如果您仍然看到意外行为,请捕获响应标头并将其编辑到问题中。

相关内容