最近在宝塔面板申请免费的SSL证书后,部署证书的80端口下的网站可以通过https正常访问,但其他未部署证书的端口也被强制跳转至https请求,导致浏览器提示不安全从而无法访问。宝塔的8888端口也不能访问,当时那是一个慌,当我尝试了各种方法,如重新放行443端口、重新配置nginx反向代理、重启服务器……在我正像个无头苍蝇乱撞时,偶然发现通过无痕浏览模式也可以正常使用,才隐隐感觉到是浏览器的问题。找对方向后,得出主要关闭浏览器的HSTS功能就可以了!
HTTP Strict Transport Security (HSTS) is an opt-in security enhancement that is specified by a web application through the use of a special response header.
Once a supported browser receives this header that browser will prevent any communications from being sent over HTTP to the specified domain and will instead send all communications over HTTPS.
It also prevents HTTPS click through prompts on browsers.
在安装配置SSL证书时,可以使用一种能使数据传输更加安全的Web安全协议,即在服务器端上开启HSTS ,它会告诉浏览器只能通过HTTPS访问,而绝对禁止HTTP方式。
因此,只要关闭浏览器的HSTS功能就可以解决这个问题,但是只能通过特定的方式,而不是清除浏览器缓存那么简单。
- 解决方式
Chrome浏览器
1.地址栏中输入chrome://net-internals/#hsts。
2.在Delete domain中输入项目的域名,并Delete(删除)。
3.可以在Query domain测试是否删除成功。 - Safari浏览器
1.完全关闭Safari浏览器。
2.删除~/Library/Cookies/HSTS.plist这个文件。
3.重新打开Safari即可(极少数情况下,可能需要重启系统)。 - Firefox浏览器
1.关闭所有已打开的页面。
2.清空历史记录和缓存。
3.地址栏输入about:permissions。
4.搜索项目域名,并点击Forget About This Site。 - Edge浏览器
下面看下解决Edge浏览器http链接自动跳转到https的问题(亲自尝试起初,当我发现无痕模式可行后,尝试清理浏览器缓存,结果依旧是失败的,还是需要进行如下操作,
在Edge浏览器地址输入:
edge://net-internals/#hsts
在最下面的Delete domain security policies
里输入想要删除的网址,注意是去掉http://前缀的网址!