浏览器将HTTP站点缓存为HTTPS,导致从站点导航到HTTPS目标时出现证书错误

浏览器将HTTP站点缓存为HTTPS,导致从站点导航到HTTPS目标时出现证书错误,http,https,cache-control,http-redirect,Http,Https,Cache Control,Http Redirect,我有一个公司网站,作为主机 然而,有人错误地向许多用户传达了URL为www.foo.bar.com的信息。在这一问题得到纠正之前,我们正在通过建立一个代理网站www.foo.bar.com来实施一个临时解决方案,该网站将把任何访问该网站的用户重定向到 这很有效。。。但只有在用户第一次导航到该页面时。下次我尝试访问www.foo.bar.com时,由于缓存的原因,浏览器会将我带到。我们没有为设置证书,因此会出现NET::ERR\u CERT\u COMMON\u NAME\u无效错误 有没有一种不

我有一个公司网站,作为主机

然而,有人错误地向许多用户传达了URL为www.foo.bar.com的信息。在这一问题得到纠正之前,我们正在通过建立一个代理网站www.foo.bar.com来实施一个临时解决方案,该网站将把任何访问该网站的用户重定向到

这很有效。。。但只有在用户第一次导航到该页面时。下次我尝试访问www.foo.bar.com时,由于缓存的原因,浏览器会将我带到。我们没有为设置证书,因此会出现NET::ERR\u CERT\u COMMON\u NAME\u无效错误

有没有一种不需要证书就能解决这个问题的方法

为了测试,我甚至尝试在我导航到www.foo.bar.com时返回一个网页,其中有一个链接可以导航到。然而,即使在这种情况下,同样的问题也会发生。我猜HSTS在这里起作用,但不确定如何进行


如果您能深入了解此事,我将不胜感激。

我相信解决您问题的唯一办法是获得www.foo.bar.com的有效证书。由于证书错误,浏览器不会尝试与服务器通信,因此您无法从错误的域重定向到正确的域

为什么只有第二次? 您提到了HST,所以我假设它正在发送一个严格的传输安全头作为其响应的一部分。此标题很可能是通过includeSubDomains选项发送的,该选项指示浏览器不仅在foo.bar.com上强制执行HTTPS,而且在该主域的所有子域上也强制执行HTTPS。因此,当试图请求www.foo.bar.com时,浏览器会匹配该HSTS规则,并自动将其重新写入HTTPS


一旦在浏览器中设置了此HSTS规则,则无法删除该规则,除非通过过期,或者通过超出原始的最长使用期限时间,或者通过在

上发出另一个最长使用期限为0的严格传输安全标头,否则无法删除该规则。您不能仅从www.foo.bar.com获取证书吗?您如何进行缓存中的初始重定向?@kicken如果必须使用证书进行重定向,那么我们知道前进的方向。为了绕过审批流程,我们正在尝试看看是否有一种不必依赖证书就能继续进行的方法。当我导航到www.foo.bar.com时,我尝试使用window.location.replace和window.location.href重定向。有效的证书是修复NET::ERR\u CERT\u COMMON\u NAME\u无效的唯一方法。@kicken我理解这一点,但我不确定为什么它只会在第二次之后发生。我第一次访问www.foo.bar.com时,它将我重定向到https://foo.bar.com,没有任何证书问题。我猜这是因为HSTS,当重定向完成时,它缓存https://www.foo.bar.com而不是http://www.foo.bar.com。我猜在客户端和服务器之间进行初始通信之后,浏览器会看到Strict Policy Security标头,并知道它必须使用https而不是http保存URL。如果有一种方法可以覆盖此行为,这就是我在第一次尝试后的想法,即使我尝试手动导航到http://www.foo.bar.com,浏览器也会将http更改为https。感谢您的确认。我也得出了同样的结论。接受这个答案。