Amazon AWS 307 响应和永久重定向到 HTTPS
Posted
技术标签:
【中文标题】Amazon AWS 307 响应和永久重定向到 HTTPS【英文标题】:Amazon AWS 307 response and permanent redirect to HTTPS 【发布时间】:2015-04-19 14:34:54 【问题描述】:我有一个来自 GoDaddy 的域,使用 AWS Route53 来管理 DNS 记录。 Route53 向负载均衡器发送请求。
对于网络服务器,我有一个负载均衡器,可将请求路由到单个(目前)EC2 实例,EC2 实例中的 nginx 获取请求并向客户端发送响应。
问题是当我使用http://
执行请求时,AWS 将请求重定向到具有307 Internal Redirect
响应的域的https://
版本。响应对象也有 Non-Authoritative-Reason: HSTS
标头。
什么问题,哪个组件是重定向请求?
【问题讨论】:
您在 ELB 上配置了哪些监听器? 【参考方案1】:它既不是组件。
这不是来自 AWS 的任何东西......它是浏览器。这是浏览器生成的内部重定向,与 HSTS 相关...HTTP Strict Transport Security。
如果您现在不这样做,那么大概在过去,您已经在来自该域的响应中生成了 Strict-Transport-Security:
标头,并且浏览器已经记住了这一事实,从而防止您不安全地访问该站点,就像它打算做的那样。
【讨论】:
我什么都不知道!谢谢。 您需要从响应标头中删除 HSTS。就我而言,它是从 nginx add_header (ngx_http_headers_module) 设置的。【参考方案2】:我知道我迟到了,但我想在 Wordpress 论坛上发布受 this post 启发的实际完整解决方案。
仅从服务器中删除 HSTS 标头并不能解决问题,因为浏览器缓存了 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
)。
【讨论】:
以上是关于Amazon AWS 307 响应和永久重定向到 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章