亚马逊 AWS 307 响应和永久重定向到 HTTPS

Amazon AWS 307 response and permanent redirect to HTTPS

我有一个来自 GoDaddy 的域,使用 AWS Route53 管理 DNS 记录。 Route53 向 load-balancer.

发送请求

对于网络服务器,我有一个 load-balancer 将请求路由到单个(目前)EC2 实例,EC2 实例中的 nginx 获取请求并向客户端发送响应。

问题是,当我使用 http:// 执行请求时,AWS 将请求重定向到具有 307 Internal Redirect 响应的域的 https:// 版本。响应 object 也有 Non-Authoritative-Reason: HSTS header。

有什么问题,哪个组件是重定向请求?

这两个都不是组件。

这不是来自 AWS 的任何东西...它是浏览器。这是浏览器生成的 内部 重定向,与 HSTS 相关... HTTP Strict Transport Security.

如果您现在不这样做,那么大概在过去,您已经生成了来自该域的响应 Strict-Transport-Security: header,并且浏览器已经记住了这一事实,阻止您以不安全的方式访问该站点,因为它的目的是这样做。

我知道我迟到了,但我想 post 实际的完整解决方案,这个灵感来自 Wordpress 论坛上的 this post

仅从服务器中删除 HSTS header 不会解决问题,因为浏览器缓存了 HSTS 响应,并且无论如何都会继续为该网站触发 https://。在 Chrome/Chromium 中,您可以从 about://net-internals/#hsts 中删除该网站,但这对您的访问者来说几乎不是一个解决方案,因为您不知道有多少人已经将其缓存为 HSTS。

在服务器端,您需要设置 max-age=0 这将(根据 RFC)要求浏览器停止将该主机视为 HSTS。

在 Apache 中,执行以下操作:

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=0"
</IfModule>

并确保您启用了 headers 模块(您可以在 Ubuntu/Debian/Mint 上使用 a2enmod headers)。