修改Windows hosts后WhatsApp子域名仍强制跳转HTTPS原因咨询
原因说明
这个强制HTTPS跳转和你本地hosts配置、Apache重定向规则、浏览器扩展都没有关系,核心触发机制是HSTS(HTTP严格传输安全协议)+ 浏览器内置HSTS预加载列表:
- HSTS本身的作用就是让浏览器自动强制目标域名使用HTTPS连接:只要浏览器匹配到对应域名的HSTS规则,会直接在内部把所有HTTP请求升级为HTTPS请求,整个升级过程发生在浏览器本地,根本不会向你解析到的127.0.0.1地址发送原始HTTP请求,所以你本地Apache配置的规则根本不会被触发。
- 你改hosts也绕不开的原因是,
whatsapp.com域名已经被加入了所有主流浏览器的静态HSTS预加载列表:这个列表是直接内置在Chrome、Firefox、Edge安装包内的,规则明确标记了.whatsapp.com(包含所有子域名)开启强制HTTPS,且规则附带includeSubDomains和preload参数,不需要用户提前访问过该域名、也不需要服务端返回HSTS响应头,浏览器从安装完成开始就默认对所有whatsapp.com子域名执行HTTPS强制跳转,完全不受本地DNS解析(包括hosts文件)结果影响。
验证方式
你可以自行确认这个规则的存在:
- Chrome/Edge浏览器访问
chrome://net-internals/#hsts(Edge访问edge://net-internals/#hsts),在「Query HSTS/PKP domain」模块输入testing.whatsapp.com查询,返回结果中会明确显示static_sts_domain: .whatsapp.com,代表该规则来自浏览器内置的静态预加载列表,而非本地缓存或服务端返回。 - Firefox浏览器可以访问
about:config,搜索network.stricttransportsecurity.preloadlist确认预加载列表处于启用状态,whatsapp相关规则默认包含在内置列表中。
你替换成其他域名测试时没有跳转问题,本质就是那些域名没有被加入浏览器的HSTS预加载列表,没有内置的强制HTTPS规则,浏览器会正常发起HTTP请求到你hosts指定的本地地址。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

