遇到Chrome浏览器自动将 http 跳转到 https,而且端口保持不变的情况,别担心,这通常不是网站或你电脑的故障,而是浏览器为了提升安全性而采取的一种强制措施。
为什么会发生这个跳转?
这个行为主要和 HSTS(HTTP Strict Transport Security,HTTP严格传输安全)有关。
-
核心机制:HSTS:当浏览器通过HTTPS访问一个网站时,如果网站服务器返回了
Strict-Transport-Security响应头,浏览器就会记住这个域名,并强制要求未来对该域名的所有访问都必须使用HTTPS。 -
端口处理:HSTS 策略是作用于整个域名的,并且会应用到该域名的所有端口。对于HTTPS协议,默认端口是443;但如果请求中明确指定了端口(比如你访问的
:3000),浏览器就会严格使用你指定的端口来建立HTTPS连接。所以,http://xxx.xuxiaowei.com.cn:3000/跳转到https://xxx.xuxiaowei.com.cn:3000/是完全符合HSTS规范的行为。 -
触发的两种可能:
- 服务器指示:你的
xxx服务在某个时刻通过HTTPS访问时,返回了Strict-Transport-Security响应头,指示浏览器为其启用HSTS。 - 浏览器内置策略:Chrome等主流浏览器内置了一个HSTS预加载列表,如果你的域名(或父域名)在这个列表中,浏览器也会强制执行HTTPS。虽然
xxx.xuxiaowei.com.cn这样的域名不太可能被预加载,但也不完全排除xuxiaowei.com.cn这个更高级别的域名存在相关策略。
- 服务器指示:你的
解决方法 
你可以按照以下顺序,由简到繁地尝试解决。但请注意,这些方法都是临时性的。一旦浏览器再次通过HTTPS接收到HSTS策略,跳转行为又会重新启用。根本的解决方法是配置你的服务器,使其能够正确处理HTTPS请求,或关闭HSTS策略。
清除Chrome的HSTS策略(最有效)
这是最直接的方法,专门用来清除浏览器记录的强制HTTPS规则。
- 在Chrome地址栏输入:
chrome://net-internals/#hsts并回车。 - 在页面下方的 Delete domain security policies 区域,输入你的域名:
xxx.xuxiaowei.com.cn。 - 点击右侧的 Delete 按钮。
- (可选)验证:你可以在上方的 Query HSTS/PKP domain 输入框中再次输入域名进行查询,如果显示“Not found”,就说明删除成功了。
- 重启浏览器,关闭所有Chrome窗口再重新打开,然后尝试访问
http://地址。
总结与建议
- Chrome 的跳转行为是出于安全考虑。它一旦通过HTTPS成功访问过你的服务,就会默认为该服务已支持HTTPS,并在未来强制使用。