现象:

Chrome浏览器访问http页面时有时会自动跳转https,导致一些问题。比如:

  • 开发阶段访问dev环境网址跳https,后端还是http,导致接口跨域。

复现:

先访问http网址,再改成https访问,下次再访问http时就会自动跳https。。。

原因:

  • 谷歌在提高 Chrome 浏览器安全性方面迈出了重要一步:用户访问不安全的 HTTP 链接,会自动升级到 HTTPS 访问。
  • 这项功能名为 HTTPS Upgrades,在用户访问 http:// 的旧链接之后,会自动尝试跳转到通过加密的 https:// 协议访问该网站。如果升级访问失败,Chrome 会回退到 http://。
  • 谷歌在 10 月 16 日开始,已向稳定渠道的所有用户推出该功能。

解决:

浏览器地址输入 chrome://flags/ 访问,搜索 HTTPS Upgrades,将状态设为disabled,重启浏览器生效。

这样设置后对业务访问有没有影响?

  • 暂时能想到的就是,如果服务端明确配置了http重定向到https,会不会导致重定向失效?
    • 理论上不会,配置disabled只是禁止客户端浏览器尝试将http升级到https访问
    • 实测,不影响重定向。