清除 Chrome 谷歌浏览器 的 HSTS 策略

遇到Chrome浏览器自动将 http 跳转到 https,而且端口保持不变的情况,别担心,这通常不是网站或你电脑的故障,而是浏览器为了提升安全性而采取的一种强制措施。

为什么会发生这个跳转?:face_with_monocle:

这个行为主要和 HSTS(HTTP Strict Transport Security,HTTP严格传输安全)有关。

  1. 核心机制:HSTS:当浏览器通过HTTPS访问一个网站时,如果网站服务器返回了 Strict-Transport-Security 响应头,浏览器就会记住这个域名,并强制要求未来对该域名的所有访问都必须使用HTTPS

  2. 端口处理:HSTS 策略是作用于整个域名的,并且会应用到该域名的所有端口。对于HTTPS协议,默认端口是443;但如果请求中明确指定了端口(比如你访问的 :3000),浏览器就会严格使用你指定的端口来建立HTTPS连接。所以,http://xxx.xuxiaowei.com.cn:3000/ 跳转到 https://xxx.xuxiaowei.com.cn:3000/ 是完全符合HSTS规范的行为。

  3. 触发的两种可能

    • 服务器指示:你的 xxx 服务在某个时刻通过HTTPS访问时,返回了 Strict-Transport-Security 响应头,指示浏览器为其启用HSTS。
    • 浏览器内置策略:Chrome等主流浏览器内置了一个HSTS预加载列表,如果你的域名(或父域名)在这个列表中,浏览器也会强制执行HTTPS。虽然 xxx.xuxiaowei.com.cn 这样的域名不太可能被预加载,但也不完全排除 xuxiaowei.com.cn 这个更高级别的域名存在相关策略。

解决方法 :hammer_and_wrench:

你可以按照以下顺序,由简到繁地尝试解决。但请注意,这些方法都是临时性的。一旦浏览器再次通过HTTPS接收到HSTS策略,跳转行为又会重新启用。根本的解决方法是配置你的服务器,使其能够正确处理HTTPS请求,或关闭HSTS策略。

清除Chrome的HSTS策略(最有效)

这是最直接的方法,专门用来清除浏览器记录的强制HTTPS规则。

  1. 在Chrome地址栏输入:chrome://net-internals/#hsts 并回车。
  2. 在页面下方的 Delete domain security policies 区域,输入你的域名:xxx.xuxiaowei.com.cn
  3. 点击右侧的 Delete 按钮。
  4. (可选)验证:你可以在上方的 Query HSTS/PKP domain 输入框中再次输入域名进行查询,如果显示“Not found”,就说明删除成功了。
  5. 重启浏览器,关闭所有Chrome窗口再重新打开,然后尝试访问 http:// 地址。

:gem_stone: 总结与建议

  • Chrome 的跳转行为是出于安全考虑。它一旦通过HTTPS成功访问过你的服务,就会默认为该服务已支持HTTPS,并在未来强制使用。