HSTS Preload List Submission 网站有非常具体的先决条件,不允许将协议更改和重定向合并为一个步骤(经典示例 -http://example.com
直接重定向请求以https://www.example.com
使其测试失败 - 必须首先将协议升级到 HTTPS,然后可能是“www”子域在离散步骤中添加)。托管在 Amazon CloudFront 上的站点是否可以满足这些规则?
这里有一个相关的问题,关于发送必要的标头,但我已经对那部分进行了测试和工作。对于使用 www 子域的站点,我的问题是重定向。
我将 CloudFront 配置为在默认行为下“将 HTTP 重定向到 HTTPS”,这对所有 HTTP 请求都非常有效,但是在升级到 HTTPS 之前https://example.com
首先重定向到降级协议的请求http://www.example.com
,这就是我卡住的地方。我需要以不同的方式处理二级域的 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
我怀疑您可能忽略了在将重定向目标协议更改为 https 后清除 CloudFront 缓存的需要,因为描述的配置(在评论中)应该按预期工作——在重定向存储桶的配置中将“协议”设置为“https”不应该这样做:
使用该模式创建CloudFront 失效请求
/*
。一旦无效请求完成,如控制台所示,再次测试。如果您仍然看到意外行为,请捕获响应标头并将其编辑到问题中。