You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HSTS跳转HTTPS时浏览器偶发使用80端口访问的问题咨询

HSTS跳转偶发HTTPS请求走80端口根因

先看两组请求的核心差异点:

  • 正常流程的首次307状态标记为307 Internal Redirect,这是浏览器本地HSTS缓存生效的典型特征:浏览器不会将初始HTTP请求发送到网络,直接在内部完成协议替换,后续HTTPS请求默认走443端口,完全符合预期逻辑。
  • 故障流程的首次307状态标记为307 Temporary Redirect,且明确显示远程地址为:80,说明这个跳转并非浏览器本地HSTS触发——浏览器确实将明文HTTP请求发送到了目标服务的80端口,由80端口上部署的负载均衡、前置代理等服务返回了跳转响应,不属于浏览器内部跳转行为。

HTTPS请求偶发走80端口由以下三类概率性触发场景导致,完全匹配偶发故障的特征:

  • HSTS本地缓存未命中
    浏览器动态HSTS缓存并非永久可靠,以下场景都会导致本地无对应域名的HSTS记录,进而主动发起80端口的HTTP请求:
    • 用户首次访问该域名,尚未收到过服务端返回的HSTS响应头
    • 用户手动清理浏览器缓存、浏览数据
    • 无痕/隐私浏览模式关闭后,临时存储的HSTS缓存被自动清空
    • HSTS头配置的max-age到期,缓存续期存在时间空窗
    • 旧版浏览器存在已知缺陷:WiFi/有线/VPN切换等网络变动场景下,会偶发清空已存储的动态HSTS缓存
  • 浏览器内核端口继承逻辑缺陷
    当307跳转由网络侧服务(而非浏览器本地HSTS)返回时,Chromium 90~105区间版本、部分定制内核国产浏览器存在确定性逻辑bug:如果跳转响应的Location头仅标注https://域名未显式指定443端口,浏览器建立后续HTTPS连接时,会错误继承上一个HTTP请求的目标端口80,而非使用HTTPS默认的443端口,这就是HTTPS请求远程地址显示为IP:80的直接原因。
  • 代理规则偶发加载异常
    如果客户端配置了PAC自动代理、全局代理,网络环境切换时可能出现代理规则加载不完整的问题:代理收到80端口的HTTP请求并返回跳转响应后,未正确更新后续连接的端口路由表,错误将HTTPS请求转发到目标IP的80端口,这类问题在跨内网、混合云访问场景下出现概率更高。

本次业务故障的另一诱因是负载均衡配置缺陷:80端口监听器未做入站协议校验,直接将收到的HTTPS加密流量按HTTP协议转发给后端业务池,最终命中错误端点引发访问异常。

修复方案
  • 负载均衡侧:在80端口监听器增加协议识别规则,入站流量匹配HTTPS Client Hello特征时,直接返回307跳转至443端口,或直接重置连接,禁止将这类异常流量转发至后端业务节点
  • 域名侧:将业务域名提交至浏览器HSTS预加载列表,预加载域名的HSTS规则会直接内置在浏览器安装包中,从根源避免发起80端口明文HTTP请求,彻底解决HSTS缓存未命中问题
  • 终端侧:内部固定用户场景可通过组策略统一推送浏览器版本更新,升级至最新稳定版内核,修复旧版本存在的端口继承逻辑缺陷

内容的提问来源于stack exchange,提问作者Niel Verheire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:36:28