解决浏览器自动将http跳转至https导致无法访问的问题

目录

解决方式

Chrome浏览器

Safari浏览器

Edge浏览器

注意事项

什么是HSTS?

写在最后


        最近在宝塔面板申请免费的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

解决浏览器自动将http跳转至https导致无法访问的问题_第1张图片

        在最下面的Delete domain security policies里输入想要删除的网址

        注意是去掉http://前缀的网址!

注意事项

什么是HSTS?

HSTS 是一种强制浏览器只能通过 HTTPS 访问某个域名的 URL 的协议,它可以防止中间人攻击,提高数据传输的安全性。

  • 当第一次访问某个域名的 HTTP URL 时,服务器会返回一个 301 或者 302 状态码,并在 Location 头部指定该 URL 的 HTTPS 版本,让浏览器重定向到 HTTPS URL。

  • 同时,服务器还会在响应头部添加一个名为 Strict-Transport-Security 的字段,它包含了 HSTS 的过期时间和其他选项。

  • 浏览器收到响应后,会将该域名和 HSTS 的信息保存在本地缓存中,并按照 Location 头部的指示跳转到 HTTPS URL。

  • 之后,再次访问该域名的 HTTP URL 时,浏览器会先检查本地缓存中是否有 HSTS 的记录,并且是否在有效期内。如果有,浏览器会直接将 HTTP URL 转换为 HTTPS URL,并发起 HTTPS 请求。

  • 如果没有,浏览器会正常发起 HTTP 请求,并重复上述步骤。

除了服务器端发送HSTS头部的方式外,还有一种方式是浏览器预置HSTS名单,即浏览器内置了一些已经启用HSTS的域名列表,当访问这些域名的HTTP URL时,浏览器会直接转换为HTTPS URL,并不需要服务器端返回HSTS头部。

写在最后

对于访问域名自动跳转为HTTPS,如果是自己的学习项目,可以暂时通过本文方法来解决;对于其它类型的项目,还是尽量部署SSL证书,支持HTTPS访问,以避免一些不安全的情况出现。

你可能感兴趣的:(网络协议,https,网络协议,http,网络,服务器)