浏览器强制使用 HTTPS 协议访问 HTTP 网站的解决方案
作者:Ake 发布于:2023年11月26日
问题
之前搭了一个网站,使用了 Cloudflare 做了代理,所以走的协议一直是 HTTPS。前段时间发现走 Cloudflare 的代理访问速度很慢,实在有点受不了,就一番配置又把域名的 DNS 服务器改回了阿里云。由于还没有 SSL 证书,所以在输地址查看时特地将协议手动改为了 HTTP,结果发现浏览器仍然是用 HTTPS 协议访问的,然后理所当然的访问不到,试了几次都被浏览器强制改为了 HTTPS,然后换了个浏览器发现没这个问题。
原因
经过一番查找,发现这是由于HSTS(HTTP Strict Transport Security,HTTP 严格传输安全)导致的,简单来说就是就是之前访问这个域名时,服务器在响应头中添加了Strict-Transport-Security
这个标头,告诉浏览器应该只通过 HTTPS 访问该站点,并且以后使用 HTTP 访问该站点的所有尝试都应自动重定向到 HTTPS,关于该标头的详细信息可以访问MDN的相关文档进行查看。
解决方案
这下就知道之前的问题是怎么回事了,那该怎么修复呢,在Chrome浏览器步骤如下:
-
在地址栏输入
chrome://net-internals/#hsts
并回车; -
在
Delete domain security policies
下的输入框输入你的域名,并点击Delete
按钮; -
在
Query HSTS/PKP domain
下的输入框输入你的域名,并点击Query
按钮,如果下面显示Not found
就成功了; -
如果没有成功,并且你的域名是子域名,那就把主域名输入第二步的输入框里也删除一次;
使用其它浏览器的自行搜一下如何删除 HSTS 哈!