【发布时间】:2020-05-09 23:57:37
【问题描述】:
我将 AWS S3 存储桶设置为网站。它对 DNS 使用 Route 53,对 SSL 证书使用 AWS Certificate Manager。公共站点是使用 HTTPS 的 S3 网站存储桶的 CloudFront 分配。分发设置为将 HTTP 重定向到 HTTPS。整个 AWS 配置是使用 AWS Java SDK v2 以编程方式设置的(尽管这与问题无关,因为我可以通过 AWS Web 控制台手动验证所有这些)。
我尝试了两种从foo.html 到bar.html 的重定向,都成功了:
- 使用带有
<ReplaceKeyWith>bar.html</ReplaceKeyWith>的路由规则进行重定向,确保添加<HostName>(参见another Stack Overflow question 的更多讨论)。 - 使用redirect S3 objects 重定向,重定向位置设置为
/bar.html(因为对象重定向显然需要绝对路径)。
除了一个奇怪的地方,一切都很好:无论我使用哪种重定向方法,当我从 foo.html 重定向到 bar.html 时,即使从 HTTPS URL 开始,CloudFront 最初都会返回一个不安全的基于 HTTP 的间接 URL,然后重定向到 HTTPS URL,如下所示:
-
https://example.com/foo.html重定向到 -
http://example.com/bar.html重定向到 https://example.com/bar.html
路由规则重定向和 S3 对象重定向都会发生这种情况。我在 Windows 10 上使用 Chrome 和 Firefox 中的网络开发人员工具对此进行了测试。
为什么 CloudFront 提供中间 HTTP 重定向?由于我的初始 URL 使用的是 HTTPS,为什么不直接重定向到 HTTPS 表单?
【问题讨论】:
标签: amazon-web-services redirect amazon-s3 https amazon-cloudfront