我试图全面了解我的问题。我有来自GoDaddy的域名,AWS Route53用于管理DNS记录。 Route53向负载均衡器发送请求。
对于网络服务器,我有一个负载均衡器,可以将请求路由到单个(现在)EC2实例,EC2实例中的nginx获取请求并向客户端发送响应。
问题在于,当我使用http://
执行请求时,AWS会使用https://
响应将请求重定向到域的307 Internal Redirect
版本。响应对象也有Non-Authoritative-Reason: HSTS
标题。
问题是什么,哪个组件是重定向请求?
答案 0 :(得分:23)
它既不是组件。
这不是AWS的任何内容......它是浏览器。它是浏览器生成的内部重定向,与HSTS ... HTTP Strict Transport Security相关。
如果您现在没有这样做,那么可能在过去,您已经在此域的响应中生成了Strict-Transport-Security:
标头,并且浏览器已经记住了这一事实,阻止您访问该网站不安全,正如其预期的那样。
答案 1 :(得分:10)
我知道我会参加派对,但我想在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
。)